Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
当使用-i参数调用python子进程时,它从不停止_Python - Fatal编程技术网

当使用-i参数调用python子进程时,它从不停止

当使用-i参数调用python子进程时,它从不停止,python,Python,我正在编写一个调用另一个python脚本(script2)的python脚本。我希望在这个过程中从script2获取print语句,而不仅仅是在最后。我有以下代码: command = ['python', '-i', script2] process = subprocess.Popen(command, stderr=subprocess.STDOUT, stdout = subprocess.P

我正在编写一个调用另一个python脚本(script2)的python脚本。我希望在这个过程中从script2获取print语句,而不仅仅是在最后。我有以下代码:

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)