我尝试编写一个可以轻松执行python代码的代码。
但是当我使用subprocess
库时:
import subprocess
print(subprocess.Popen("py setup.py install", shell = True, stdout = subprocess.PIPE).stdout.read())
print(subprocess.Popen("py setup.py py2exe", shell = True, stdout = subprocess.PIPE).stdout.read())
我看到了这个结果
b''
请帮助我
答案 0 :(得分:0)
您尝试运行的命令很可能产生stderr
,您的代码不会显示。如果您不想单独处理stderr
消息,可以将stdout
消息发送给import subprocess
p = subprocess.Popen("python filedoesntexist",
shell=True,
stdout=subprocess.PIPE,
stderr=subprocess.STDOUT)
print(p.stdout.read())
。
我将在子进程中使用相对安全的不同命令。我会稍微分解一下,而不是只有一条长线。
stderr=subprocess.STDOUT
看到我添加了参数stdout
,这会将所有错误消息发送到subprocess
。 "python filedoesntexist"
尝试运行filedoesntexist
,因为print
是一个不存在的文件,它将b"python: can't open file 'filedoesntexist': [Errno 2] No such file or directory\n"
此消息:
string
但您可能只想获取bytes
而不是universal_newlines=True
,并且可以像这样添加参数p = subprocess.Popen("python filedoesntexist",
shell=True,
stdout=subprocess.PIPE,
stderr=subprocess.STDOUT,
universal_newlines=True)
print(p.stdout.read())
:
string
现在它只打印python: can't open file 'filedoesntexist': [Errno 2] No such file or directory
,如下所示:
run()
有关其他信息,请访问python documentation
修改的
文档建议使用subprocess.run(["python", "filedoesntexist"])
,可以这样做(在J.F.Sebastian 的评论后更新):
stdout
如果您需要以某种方式处理Popen
,请添加前面customTemplate.js
示例中描述的参数。