在我的代码中,我有一行类似于:
rval = subprocess.call(["mkdir",directoryName], shell=True)
我可以查看rval
以查看它是0
还是1
,但如果是1
,我希望获得命令中的文字{ {1}}文件格式,如果我想确保文本相同,我可以将它与另一个文件进行比较。
是否有可能有这样的行,但我知道这不起作用
"A subdirectory or file ben already exists."
所以无论命令发生了什么,文本都会在rval = subprocess.call(["mkdir",directoryName], shell=True) >> filename
中捕获,filename
仍然有返回码?
答案 0 :(得分:18)
子进程模块具有内置的'check_output'功能,用于执行此操作:
In [11]: result = subprocess.check_output(['pwd'])
In [12]: print result
/home/vagrant
答案 1 :(得分:15)
import subprocess
f = open(r'c:\temp\temp.txt','w')
subprocess.call(['dir', r'c:\temp'], shell=True, stdout=f)
f.close()
答案 2 :(得分:10)
import subprocess
try:
result = subprocess.check_output(['dir', r'c:\temp'], shell=True)
print result
except subprocess.CalledProcessError as e:
return_code = e.returncode
你无论如何都需要使用try catch,因为如果返回代码非零,它会抛出异常:)