当使用-i参数调用python子进程时,它从不停止
我正在编写一个调用另一个python脚本(script2)的python脚本。我希望在这个过程中从script2获取print语句,而不仅仅是在最后。我有以下代码:当使用-i参数调用python子进程时,它从不停止,python,Python,我正在编写一个调用另一个python脚本(script2)的python脚本。我希望在这个过程中从script2获取print语句,而不仅仅是在最后。我有以下代码: command = ['python', '-i', script2] process = subprocess.Popen(command, stderr=subprocess.STDOUT, stdout = subprocess.P
command = ['python', '-i', script2]
process = subprocess.Popen(command,
stderr=subprocess.STDOUT,
stdout = subprocess.PIPE)
print "process started"
while process.poll() is None:
line = process.stdout.readline()
if not line:
break
print line
这段代码确实会将输出打印到屏幕上,但子流程永远不会结束。
但是,将command
更改为command=['python',script2]
将结束子流程,但仅在子流程结束后将输出打印到屏幕上
我怎样才能得到想要的行为?事先谢谢你,
Roel我不知道如何避免这个陷阱,但从解释器的帮助文本中: -i:运行脚本后进行交互检查;强制提示“均匀” 如果stdin似乎不是终端;另外,PYTHONINSPECT=x
重要的是它会强制提示。这意味着在执行脚本之后,您将再次得到一个解释器提示,并可以访问所有变量和内容。解释器等待输入,直到收到键盘中断,
exit()
作为提示输入或进程被简单终止后才会终止。尝试使用-u
调用子进程(不要使用-i
)。这将停止缓冲其输出。在结束之前,您不会看到任何输出,因为它会将所有输出写入缓冲区,缓冲区在填满或进程完成之前不会刷新。太好了,这可以按照我的要求工作。这不是我第一次遇到命令行参数的问题。我找不到关于不同选项及其含义的概述。我在哪里可以找到它?请尝试python--help
或查看:(python2.7)(python3.2)