如何在Python中显示和解析rsync进度?

如何在Python中显示和解析rsync进度?,第1张

概述我正在使用rsync的开发版本和–info-progress选项.我正在编写一个 python程序,它使用rsync将文件从服务器传输到本地计算机: finalresult = subprocess.Popen(['sshpass', '-p', password, 'rsync', '-avz', '--info=progress2', 'hostname:/filename', '/home/ 我正在使用rsync的开发版本和–info-progress选项.我正在编写一个 python程序,它使用rsync将文件从服务器传输到本地计算机:

finalresult = subprocess.Popen(['sshpass','-p',password,'rsync','-avz','--info=progress2','hostname:/filename','/home/nfs/django/user'],stdout=subprocess.PIPE).communicate()[0]

当我在终端中运行程序时,它不会向我显示进度,但是如果我独立使用rsync实用程序它会显示进度.我希望在终端中查看进度并解析或获取进度百分比以便稍后使用它来实时向用户显示进度条.谢谢!

编辑:
这是我到目前为止所尝试的:
上面的代码将命令处理存储在finalresult变量中.我试图在django模板中打印finalresult变量,但它不会返回任何内容.

解决方法 抱歉,这可能既不能用子进程也不能用标准库的其余部分完成.那是因为在subprocessprocessmunicate()中你会发现:

def wait(self):   """Wait for child process to terminate.  Returns returncode   attribute."""   if self.returncode is None:      # Try calling a function os.waitpID(self.pID,0)      # Ignore Interrupted System Call (errno.EINTR) errors        pID,sts = _eintr_retry_call(os.waitpID,self.pID,0)      self._handle_exitstatus(sts)   return self.returncode

在Unix上,os.waitpID()函数调用意味着:等待进程ID pID给出的子进程的完成,并返回包含其进程ID和退出状态指示的元组.因此,您必须等到子进程完成.

最接近的替代方案是pexpect,但它仍然不会进行进度条分析.一个可能的@R_419_6954@案是破解rsync并修补其进度输出,以便pexpect可以使用它.

总结

以上是内存溢出为你收集整理的如何在Python中显示和解析rsync进度?全部内容,希望文章能够帮你解决如何在Python中显示和解析rsync进度?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1196759.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-03
下一篇 2022-06-03

发表评论

登录后才能评论

评论列表(0条)

保存