python的命令行控制方法os.popen的使用

我想用python打开cmd黑框,并且自动输入命令,请问有方法实现吗?

因为我没找到方法,所以退而求其次,想用os模块直接实现命令行,网上说有os.system和os.popen两种方法,对比后我选择了后者。
但现在有个问题,我运行的命令行可能有10秒到1分钟左右。本来如果在cmd里输入命令,那么这段时间里会不断出现命令的反馈, 一行行的信息,但是现在什么也看不到。

所以,要么有没有能直接使用cmd的方法?要么能否让os.popen在过程中就反馈命令行信息?

方案来自 梦想橡皮擦 狂飙组基于 GPT 编写的 “程秘”


是的,可以使用 Python 来打开命令提示符(cmd)黑框并自动输入命令。可以使用 subprocess 模块来实现。

如果想要观察命令在执行过程中的输出,可以使用 subprocess.Popen 类的 communicate 方法。代码如下:

import subprocess

cmd = 'your_command'
process = subprocess.Popen(cmd, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
while True:
    output = process.stdout.readline()
    if output == '' and process.poll() is not None:
        break
    if output:
        print(output.strip().decode('utf-8'))
rc = process.poll()

这样,每当有输出时,就会打印出来。

你可以使用Python内置的subprocess模块来打开cmd黑框,并自动输入命令。下面是一个示例代码:


import subprocess

cmd = 'ping www.google.com' # 替换成你要执行的命令
subprocess.Popen('cmd.exe /k ' + cmd, shell=True)

这里使用subprocess.Popen函数来打开cmd黑框,并在其中执行指定的命令。/k参数表示命令执行完毕后不关闭窗口,这样你就可以看到命令的输出信息了。

如果你希望在Python代码中捕获命令输出的信息,可以使用subprocess.Popen函数的stdout参数,将输出信息重定向到一个文件句柄中,如下所示:

import subprocess

cmd = 'ping www.google.com' # 替换成你要执行的命令
process = subprocess.Popen(cmd, stdout=subprocess.PIPE, shell=True)
while True:
    output = process.stdout.readline()
    if not output and process.poll() is not None:
        break
    if output:
        print(output.strip().decode('gbk')) # 替换成你的命令行编码


这里使用subprocess.Popen函数的stdout参数将命令输出信息重定向到一个管道中。然后使用process.stdout.readline()函数逐行读取输出信息,并打印出来。poll()函数用于检查命令是否执行完毕,如果执行完毕就退出循环。请注意,这里的输出信息可能需要根据你的命令行编码进行相应的解码。

您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632