我正在尝试编写一个函数,它每1分钟读取一次变量并返回每次的值。变量名为proc:
proc = subprocess.Popen(['sshpass', '-p', password, 'rsync', '-avz', '--info=progress2', source12, destination],
stderr=subprocess.PIPE, stdout=subprocess.PIPE).communicate()[0]
进程存储在proc变量中。我希望函数每1分钟轮询一次变量并返回值。直到变量执行完毕。最好的方法是什么?
尝试使用:
def doWork():
while True:
proc = subprocess.Popen(['sshpass', '-p', password, 'rsync', '-avz', '--info=progress2', source12, destination],
stderr=subprocess.PIPE, stdout=subprocess.PIPE).communicate()[0]stdout=subprocess.PIPE).communicate()[0]
data = sort(proc)
print data
time.sleep(10)
不过运气不好!它同时打印整个进程并循环。
下面的代码将运行rsync,并在命令可用时读取命令的任何输出。我使用rsync的--progress选项打印出它的进度。进度更新有时以
\n
结尾,有时以\r
结尾。所以我阅读单个字符,然后通过查找这两个字符中的任何一个来形成每行字符。每当我遇到一个新的进度线,我就把它打印到屏幕上。您可以选择执行任何操作,例如分析完成百分比并显示图形进度条。如果您有兴趣了解如何在终端check this answer out中生成进度条。我放了一个sync函数和示例输出的示例调用。代码
输出
相关问题 更多 >
编程相关推荐