python – 从subprocess.Popen异步读取stdout
发布时间:2020-12-16 23:26:56 所属栏目:Python 来源:网络整理
导读:我正在使用subprocess.popen运行子程序.当我从命令窗口(cmd.exe)启动我的 Python程序时,程序会随着程序的发展在窗口中写入一些信息和日期. 当我不在命令窗口中运行我的Python代码时,它会为这个子程序的输出打开一个新的命令窗口,我想避免这种情况.当我使用以
我正在使用subprocess.popen运行子程序.当我从命令窗口(cmd.exe)启动我的
Python程序时,程序会随着程序的发展在窗口中写入一些信息和日期.
当我不在命令窗口中运行我的Python代码时,它会为这个子程序的输出打开一个新的命令窗口,我想避免这种情况.当我使用以下代码时,它不会显示cmd窗口,但它也不会打印状态: p = subprocess.Popen("c:/flow/flow.exe",shell=True,stdout=subprocess.PIPE) print p.stdout.read() 如何在程序输出中显示子程序的输出? 解决方法
用这个:
cmd = subprocess.Popen(["c:/flow/flow.exe"],stdout=subprocess.PIPE) for line in cmd.stdout: print line.rstrip("n") cmd.wait() # you may already be handling this in your current code 请注意,您仍然需要等待子程序刷新其stdout缓冲区(在不写入终端窗口时通常以不同的方式缓冲),因此当子程序打印时,您可能无法立即看到每一行(这取决于各种OS细节和子程序的细节). 还要注意我是如何删除shell = True并用列表替换字符串参数,这通常是推荐的. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |