我想打开一个终端并使用python运行一个命令。我想运行rsync
命令并在终端上查看该命令的实时进度。我可以使用subprocess并获取rsync
的输出,但我只能在subprocess完成后获得输出。我想要在终端上实时执行rsync
命令。你知道吗
代码:
import subprocess
command = subprocess.Popen(["rsync -apvr source destination --progress"], shell=True, stdout=subprocess.PIPE)
out, err = command.communicate()
有人能告诉我怎么做吗?你知道吗
首先:你不需要。改用这个:
或者,如果不想手动拆分命令行:
第二:
communicate
等待进程结束。如果要将子进程的输出与当前进程实际混合,可以简单地避免指定stdout=subprocess.PIPE
,或者如果希望显式,可以指定stdout=sys.stdout
:这将在进程的标准输出中打印
rsync
的输出。你知道吗如果您想“实时”解析输出,则必须使用
stdout=subprocess.PIPE
并手动从Popen.stdout
读取:取决于您想要做什么,您可能想要使用
select
模块来获得“非阻塞读取”等相关问题 更多 >
编程相关推荐