python中output使用_如何在Python中使用subprocess.check_output()?

正确的答案(使用Python2.7和更高版本,因为check_output()was introduced then)是:py2output = subprocess.check_output(['python','py2.py','-i', 'test.txt'])

为了演示,下面是我的两个程序:

py2.py:年import sys

print sys.argv

py3.py型:import subprocess

py2output = subprocess.check_output(['python', 'py2.py', '-i', 'test.txt'])

print('py2 said:', py2output)

运行它:$ python3 py3.py

py2 said: b"['py2.py', '-i', 'test.txt']\n"

以下是您的每个版本的问题:py2output = subprocess.check_output([str('python py2.py '),'-i', 'test.txt'])

首先,str('python py2.py')与'python py2.py'是完全相同的事情-你需要一个str,并调用str将其转换为str。这使得代码更难阅读,更长,甚至更慢,而不会增加任何好处。

更严重的是,python py2.py不能是一个单独的参数,除非您实际尝试运行一个名为/usr/bin/python\ py2.py的程序。你没有;你试图用第一个参数来运行,比如说,/usr/bin/python。所以,你需要让它们在列表中分开。

您的第二个版本修复了这个问题,但是您在test.txt'之前缺少'。这应该给你一个SyntaxError,可能是说EOL while scanning string literal。

同时,我不知道你是怎么找到文档的,但是找不到任何有参数的例子。第一个例子是:>>> subprocess.check_output(["echo", "Hello World!"])

b'Hello World!\n'

它用附加参数"Hello World!"调用"echo"命令。

另外:-i is a positional argument for argparse, test.txt is what the -i is

我很确定-i不是位置参数,而是可选参数。否则,这句话的后半句就没有意义了。

你可能感兴趣的:(python中output使用)