Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/365.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
python中各种文件的scp ETA_Python_Subprocess_Scp - Fatal编程技术网

python中各种文件的scp ETA

python中各种文件的scp ETA,python,subprocess,scp,Python,Subprocess,Scp,我有一个Python脚本,它将文件“file.rar”从不同的服务器复制到我的笔记本电脑上,每个复制的文件都将被重命名。scp命令作为子进程发送,因此它将转到bg并让scp并行运行。我已经创建了ssh密钥文件,因此不需要任何密码 for ind in range(201,205) : finalname = 'fich'+str(ind)+'.rar' comm = 'scp user@192.168.1.'+str(ind)+':file.rar '+finalname

我有一个Python脚本,它将文件“file.rar”从不同的服务器复制到我的笔记本电脑上,每个复制的文件都将被重命名。scp命令作为子进程发送,因此它将转到bg并让scp并行运行。我已经创建了ssh密钥文件,因此不需要任何密码

for ind in range(201,205) :
    finalname = 'fich'+str(ind)+'.rar'
    comm = 'scp user@192.168.1.'+str(ind)+':file.rar '+finalname
    proc = subprocess.Popen([comm], shell='TRUE')
    eval( 'proc' + str(ind) + ' = proc' )
我希望在控制台中同时显示每个scp的单个进度条。我可以买一个

sts = os.waitpid(proc201.pid, 0)
但这将只显示其中一个过程,并将保留脚本直到它完成。我希望在我的控制台上有这样的东西

file201.rar 37%   11MB   2.2MB/s   00:18 ETA
file202.rar 47%   11MB   2.2MB/s   00:28 ETA
file203.rar 27%   11MB   2.2MB/s   00:18 ETA
file204.rar 37%   11MB   2.2MB/s   00:08 ETA
谢谢

您在这里使用eval是不必要的。只需将您的子流程对象存储在一个数组中:proc_list.appendproc可能很有趣:用于SSH,非常容易使用,您可以传递回调以进行进度监控。