年华123 2023-02-17 02:18 采纳率: 82.4%
浏览 35
已结题

python的subprocess模块的问题

我之前提了一个问题https://ask.csdn.net/questions/7886197?utm_medium=notify.im.mustAnswerNotify.168ef0bac4d90000.a&username=afrcmg
问的是,如何使用python运行cmd命令并返回信息

回答者的回答也没什么问题,我试验了,可以用。

但是新的问题是,我要运行的cmd命令中,在cmd黑框里有很多反馈的info信息,类似这样

img


这些info似乎无法用process.stdout.readline来显示输出

是否有什么解决办法,可以让我实时获取到这些info?

  • 写回答

3条回答 默认 最新

  • qq_46161207 2023-02-17 02:41
    关注

    可以使用subprocess.Popen来启动一个新的进程,并通过subprocess.PIPE将其stdout和stderr输出流读取到Python中,实时显示其输出信息。

    例如,假设要运行的cmd命令为test.bat,那么可以通过以下代码来实时显示cmd的输出信息:

    import subprocess
    
    # 启动新进程并将其输出流读取到Python中
    p = subprocess.Popen(['test.bat'], stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
    
    # 按行读取输出流,并实时显示输出信息
    for line in iter(p.stdout.readline, b''):
        print(line.decode('utf-8').strip())
    
    # 等待进程退出
    p.wait()
    

    这样就可以实时获取到test.bat命令的输出信息,包括info信息。其中p.stdout.readline会按行读取进程的输出流,iter()会将其变成可迭代对象,当读取到空字节(即进程输出流结束)时退出循环。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
    年华123 2023-02-17 07:15

    也就是说,必须用bat文件,不能直接用命令文本,是这样吗?

    回复
查看更多回答(2条)
编辑
预览

报告相同问题?

问题事件

  • 系统已结题 2月28日
  • 已采纳回答 2月21日
  • 创建了问题 2月17日
手机看
程序员都在用的中文IT技术交流社区

程序员都在用的中文IT技术交流社区

专业的中文 IT 技术社区,与千万技术人共成长

专业的中文 IT 技术社区,与千万技术人共成长

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

客服 返回
顶部