【发布时间】:2013-04-23 15:43:00
【问题描述】:
我正在制作一个小型 python 程序来复制一些文件。我的文件名在“selectedList”列表中。
用户选择了源目录“self.DirFilename”和目标目录“self.DirDest”。
我使用 cp 而不是 shutil,因为我听说过 shutil 很慢。
这是我的代码:
for i in selectedList:
src_dir = self.DirFilename + "/" + str(i) + ".mov"
dst_dir = self.DirDest
r = os.system('cp -fr %s %s' % (src_dir, dst_dir))
if r != 0:
print 'An error occurred!'**
我希望副本在源目录中搜索给定的文件名,然后在目标中重新创建文件夹结构并复制文件。
任何建议都会有所帮助(就像我正在犯的任何明显的错误一样)- 这是我的第一个 python 程序,我快到了!
谢谢 加文
【问题讨论】:
-
为避免有趣的非转义字符(如空格)出现问题和安全问题,请执行以下操作:
r = subprocess.call(('cp', '-fr', src_dir, dst_dir + '/')) -
仅供参考
shutil复制速度很慢,因为它的缓冲区大小只有 16K。根据多个来源(例如blogs.blumetech.com/blumetechs-tech-blog/2011/05/…),更大的缓冲区大小可以产生很大的不同。对于递归副本,更改shutil缓冲区大小并不容易。请参阅上面的链接以获取替代实现可能巨大的差异与不同的磁盘查找模式有关。 -
这里的问题对我来说并不明显。
-
谢谢 pts,我会调查这两个。
-
我想在目录中搜索列表中指定的文件。找到的文件可能是目录深处的几个文件夹。找到文件后,我想将文件及其文件夹结构复制到目标目录。我当前的代码只能在一个目录中找到并复制到另一个目录。这有意义吗?