我正在创建一个python脚本,它使用子进程运行rsync,然后获取stdout并打印它。在
但是有一个问题。当文件开始动态上传时,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
参数,这将抑制动态进度更新。在你试着传递论点stderr=子流程.管道如下所示:
编辑:你将不得不阅读self.rsyncRun.stderr,而不是self.rsyncRun.标准输出. 在
编辑2:更完整的代码示例如下:
^{pr2}$然后您可以检查outData和errData,看看进度是否打印在那里。当然,communicate()在进程终止之前不会返回,因此如果您希望打印出一些实时进度,那么这是行不通的。在
相关问题 更多 >
编程相关推荐