加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

python – 在运行时获取进程的输出

发布时间:2020-12-16 23:43:54 所属栏目:Python 来源:网络整理
导读:我使用 python脚本使用subprocess.Popen运行进程,同时将输出存储在文本文件中,并在控制台上打印.这是我的代码: result = subprocess.Popen(cmd,shell=True,stdout=subprocess.PIPE)for line in result.stdout.readlines(): #read and store result in log f
我使用 python脚本使用subprocess.Popen运行进程,同时将输出存储在文本文件中,并在控制台上打印.这是我的代码:
result = subprocess.Popen(cmd,shell=True,stdout=subprocess.PIPE)
for line in result.stdout.readlines(): #read and store result in log file
    openfile.write("%sn" %line)
    print("%s" %line)

上面的代码工作正常,但它的作用是首先完成该过程并将输出存储在结果变量中.之后for循环存储输出并打印它.

但我希望在运行时输出(因为我的过程可能需要数小时才能完成,所有这些时间都没有得到任何输出).

那么有没有任何其他函数可以动态地(在运行时)给我输出,意味着只要进程给出第一行,就应该打印出来.

解决方法

这里的问题是.readlines()在返回之前获取整个输出,因为它构造了一个完整的列表.直接迭代:
for line in result.stdout:
    print line

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读