在Python里面,我们最经常使用调用系统命令的函数,是os模块的system()和popen()。
但是两个有一些区别,要在根据情况去选择。
system():
返回值:0(成功),1,2
为同步调用,直到命令执行结束才会返回是否成功标志,并不能反馈信息。
优点:
有执行状态返回值,可以判断到是否执行成功。
缺点:
不适合用于想使用调用系统命令的返回值的情况。
popen():
相当于Linux下的echo,使用于想调用系统命令的情况。函数返回是 file read 的对象,对其进行读取read、readlines等操作可以看到执行的输出。
但是调用失败是不会有结果返回的。
优点:
很适合想利用返回值的情况。
缺点:
不能知道是否执行成功,有一点不可控。
例子:
# 想使用date返回值,用system就不太适合,因为取值取不到想要的日期,而是
# 取到0
>>> os.system("date +'%Y-%m-%d'")
2019-07-17
0
# 这时应该去使用 popen、
>>> os.popen("date +'%Y-%m-%d'")
<os._wrap_close object at 0x7f8eab79a5c0>
# 我们需要加上read()去读取结果
>>> os.popen("date +'%Y-%m-%d'").read().split()[0]
'2019-07-17'