尝试使用subprocess.run()运行python文件时没有stdout

时间:2019-08-03 17:52:24

标签: flask python-3.6

我正在尝试从python脚本中运行python文件。我怀疑该文件甚至一开始就已经运行,并且在标准输出中也没有显示任何内容供我调试。

我已经在子进程中尝试了命令'ls',并且可以正常工作,并且位于我要运行的temp.py文件所在的正确目录中。

当我尝试设置参数'shell = True'时,出于某种原因,我将我带入python repl中。

这是字符串输出:

Terminal output: CompletedProcess(args=['python3', 'temp.py'], returncode=0, stdout=b'') 

这是用于生成它的代码:

result = subprocess.run(['python3', 'temp.py'], stdout=subprocess.PIPE, check=True)
print('Terminal output: '+str(result))

编辑 我也尝试过

process = Popen(['python3', 'temp.py'], stdout=PIPE, stderr=PIPE)  
stdout, stderr = process.communicate()
print('Terminal output: '+str(stdout)+str(stderr))   

没有雪茄:

Terminal output: b''b''

1 个答案:

答案 0 :(得分:0)

因此,我找到了一个可行的替代方法。我将文件的所有内容都以'-c'扩展名转储到了python3命令中。

process = Popen(['python3','-u', '-c', strCode], stdout=PIPE, stderr=PIPE) 

strCode是文件的内容。