要在Python3中正确捕获输出和错误,并实时显示输出,可以使用subprocess
模块来执行外部命令。以下是一个示例代码:
import subprocess
import select
def run_command(cmd):
proc = subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE, shell=True)
while proc.poll() is None:
# 使用select来实时监测输出和错误流
rlist, _, _ = select.select([proc.stdout, proc.stderr], [], [])
for stream in rlist:
line = stream.readline().decode('utf-8')
if line:
print(line.strip())
# 处理剩余的输出和错误
for stream in [proc.stdout, proc.stderr]:
for line in stream.readlines():
print(line.decode('utf-8').strip())
return proc.returncode
# 示例调用
cmd = "badblocks -v /dev/sda"
returncode = run_command(cmd)
print(f"命令返回码: {returncode}")
在这个示例中,run_command
函数使用subprocess.Popen
启动一个子进程来执行命令。然后使用select
模块来实时监测子进程的输出流和错误流。每当有输出或错误可读时,就会将其打印出来。最后,函数返回子进程的返回码。
你可以将cmd
变量替换为你想要执行的命令,并根据需要进行其他处理。
上一篇:把DAX转换成分钟和秒