- os.system
最简单直接的调用方法,对于没有输出的命令行,推荐使用这个方法;
缺点:
import os
cmd='ls'
os.system(cmd)
- os.popen
同意基于os模块,但是可以获取到以字符串形式的输出;
import os
cmd='ls'
res=os.popen(cmd)
OutputStr=res.read()
print(OutputStr)
res.close()
由于可以关闭这个返回流,可以用下面的写法;
import os
cmd='ls'
with os.popen(cmd, 'r') as f:
print(f.read())
有时候遇到乱码,报错:UnicodeDecodeError: 'gbk' codec can't decode byte 0xe4 in position 76
可以用如下方法:
import os
cmd='ls'
with os.popen(cmd, 'r') as f:
print(f.buffer.read().decode('utf-8'))
关于编码问题,引用一个链接:https://www.v2ex.com/t/458543
- subprocess.Popen
用处不大,保留在此,有需要再补充。