Skip to main content
 首页 » 编程设计

python之如何使用子流程获取动态行

2025年05月04日14Free-Thinker

我正在创建一个 python 脚本,它使用子进程运行 rsync,然后获取标准输出并打印它。

但是有个问题。当rsync开始上传文件时,会在一个动态行中显示当前文件、速度等,不断变化。 此行永远不会使用我的脚本打印。我该如何解决?

您可以在这里找到我的完整脚本:https://github.com/danielholm/BareShare/blob/master/bareshare.py

还有一个片段:

self.rsyncRun = subprocess.Popen(["rsync","--bwlimit="+upload,"--stats","--progress","-azvv","-e","ssh",local,remotedir,"--log-file="+rsynclog], stdout=subprocess.PIPE) 
self.line = self.rsyncRun.stdout.readline() 
rsyncM = self.line.rstrip() 
self.labelR.set_label(rsyncM) 
print "DEBUG: "+rsyncM 

请您参考如下方法:

尝试使用 -q 运行 rsync 或省略 -progress 参数,这将抑制动态进度更新。