微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

递归复制进度文件

如何解决递归复制进度文件

| 我之前曾在这里询问过有关Python和复制文件的问题,但是我有一个不同的情况要处理。 我使用的Linux发行版安装程序几乎完成了工作,现在要做的就是将文件复制到目标分区。由于大多数发行版安装程序都有进度条,因此我也希望添加一个。 现在,我正在使用PyQt4,我的代码如下所示:
self.status(\'Counting files...\')
self.count = int(check_output([\'-c\',\'find /opt/linux/work/root-image/ -type f | wc -l\'],stderr = PIPE,shell = True))

self.status(\'copying files...\')

i = 0

for root,dirs,files in os.walk(\'/opt/linux/work/root-image/\'):
  for file in files:
    i += 1
    f = os.path.join(root,file)

    try:
      os.system(\'mkdir -p /tmp/foo\' + os.path.split(f)[0])
    except:
      pass

    os.system(\'cp \' + f + \' /tmp/foo\' + f)

    if i % 100 == 0:
      self.emit(SIGNAL(\'progress(int)\'),int(100.0 * float(i) / float(self.count)))

self.status(\'Done...\')
由于进度条,效率很低。整个图像为
2.1GB
,并且脚本需要很长时间才能复制文件。比简单的“ 2”长得多。 有什么有效的方法可以做到这一点吗?对于单文件复制进度条,您要做的只是一次读取很少的块,但是我不知道如何对包含3个文件的目录执行此操作。 任何帮助都会有所帮助。谢谢!     

解决方法

您可以尝试使用
shutil.copy
复制文件,而不是使用
os.system
调用操作系统(这将创建一个单独的进程)。您也可以使用
os.mkdir
创建新目录。但是,您确定由于进度条而不是其他原因导致它运行缓慢吗?     

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。