如何将“subprocess.call”的输出捕获到文件中?

2024-09-27 07:26:44 发布

您现在位置:Python中文网/ 问答频道 /正文

在我的代码中,有一行类似于:

rval = subprocess.call(["mkdir",directoryName], shell=True)

我可以检查rval看它是0还是1,但是如果是1,我希望命令"A subdirectory or file ben already exists."中的文本是文件格式的,因此如果我想确保文本相同,可以将其与另一个文件进行比较。

有可能有这样一条线,但我知道这样不行

rval = subprocess.call(["mkdir",directoryName], shell=True) >> filename

所以无论命令发生什么,文本都会被捕获到filename,而rval仍然有返回代码?


Tags: or代码文本命令trueshellcallfilename
3条回答

子流程模块有一个内置的“check_output”函数来执行此操作:

In [11]: result = subprocess.check_output(['pwd'])

In [12]: print result
/home/vagrant
import subprocess
f = open(r'c:\temp\temp.txt','w')
subprocess.call(['dir', r'c:\temp'], shell=True, stdout=f)
f.close()
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,因为如果返回代码不为零,它将引发异常:)

相关问题 更多 >

    热门问题