【发布时间】:2016-06-19 23:26:27
【问题描述】:
我正在努力获取一些 python 脚本来启动子进程,等到它完成然后检索所需的数据。我对 Python 很陌生。
我希望作为子进程运行的命令是
./bin.testing/Eva -t --suite="temp0"
在 Linux 终端中手动运行该命令会产生:
in terminal mode
Evaluation error = 16.7934
我想将命令作为 python 子进程运行,并接收返回的输出。但是,我尝试的一切似乎都跳过了第二行(最终,这是我想要的第二行。)目前,我有这个:
def job(self,fen_file):
from subprocess import Popen, PIPE
from sys import exit
try:
eva=Popen('{0}/Eva -t --suite"{0}"'.format(self.exedir,fen_file),shell=True,stdout=PIPE,stderr=PIPE)
stdout,stderr=eva.communicate()
except:
print ('Error running test suite '+fen_file)
exit("Stopping")
print(stdout)
.
.
.
return 0
这一切似乎产生的是
in terminal mode
0
缺少重要的行。 print 语句只是为了让我可以看到我从子流程返回的内容 - 目的是它将替换为处理第二行中的数字并返回输出的代码(这里我只是返回0 只是为了让这个特定的位首先工作。这个函数的调用者打印结果,这就是为什么输出末尾有一个零。) exedir 只是子进程的可执行文件的目录,而fen-file只是子进程需要的一个ascii文件。我已经尝试从子进程的源代码中删除“终端模式”并重新编译它,但这不起作用——它仍然没有返回重要的第二行。
提前致谢;我希望我做错的事情真的很简单。
编辑:我应该补充一点,子流程 Eva 可能需要一两秒才能完成。
【问题讨论】:
标签: python linux subprocess