python执行cmd命令-os.popen与subprocess

1. os.popen 命令

python 内置的 os.popen 命令可以用于执行简单的命令。

1
2
3
4
5
6
7
8
import os

# 直接运行的命令,如:打开记事本
os.popen('notepad')

# 获得运行的log或结果,如:列出文件清单
r = os.popen('tree')
print(r.read())

2. subprocess 模块

复杂一点的命令可以使用 subprocess 模块,也是 python 内置的,可以对输入/输出进行操作;

2.1 subprocess.call 命令

1
2
3
4
5
6
7
8
9
10
11
import subprocess

# 可显示运行log/结果
subprocess.call('pip list', shell=True)

# 可交互
subprocess.call('pip uninstall pip', shell=True)

# 返回值为错误代码
retcode = subprocess.call('tree', shell=True)
print(retcode)

2.2 subprocess.Popen 命令

1
2
3
4
5
6
7
8
9
10
import subprocess

# 获得运行结果,一次读取所有,要等待命令运行结束
p = subprocess.Popen('ping baidu.com', shell=True, stdout=subprocess.PIPE).stdout
print(p.read().decode('gbk'))

# 获得运行结果,一次读取一行
p = subprocess.Popen('ping baidu.com', shell=True, stdout=subprocess.PIPE)
for line in iter(p.stdout.readline, b''):
print(line.strip().decode('gbk'))

subprocess.Popen 参数比较复杂,更多用法参见:
帮助文档