(使用Python 3.4.2) 我正在尝试将不同位置的8,000多个文件列表复制到临时目录。 源路径看起来像这个D:\ dir \ img0 \ 000和目标路径D:\ stage2 \ NW000.tif。
根据我的理解,shutil可以解决这个问题,我在网上找到了一个简单的例子,我一直在努力适应我的目的。我已经将源和目标路径的8,000多条记录保存在两个单独的文本文件中,每个目录路径后都有换行符。我希望变量src和dst存储列表的所有值,并希望shutil.copy将文件复制到新目标。我一直试图通过创建1个源文件夹和3个dest来测试代码。文件夹:Test,TestA,TestB,TestC。我创建了两个带有路径列表的文本文件,它们的外观如下:
(source.txt)
C:\Users\user1\Desktop\Test\t1.txt
C:\Users\user1\Desktop\Test\t2.txt
C:\Users\user1\Desktop\Test\t3.txt
(dest.txt)
C:\Users\user1\Desktop\TestA\1t.txt
C:\Users\user1\Desktop\TestB\2t.txt
C:\Users\user1\Desktop\TestC\3t.txt
我将两个列表文本文件,三个虚拟文本文件和脚本保存在Test目录中并执行了脚本,但是我没有在目标目录中找到这些文件。我想知道为什么这个脚本不起作用(在哪里放置源文件,目标文件和脚本文件以便脚本正确执行)。:
import shutil
import errno
file = open('source.txt', 'r')
source = file.readlines()
file = open('dest.txt', 'r')
destination = file.readlines()
def copy(src, dst):
try:
shutil.copytree(src, dst)
except OSError as e:
# If the error was caused because the source wasn't a directory
if e.errno == errno.ENOTDIR:
shutil.copy(src, dst)
else:
print('Directory not copied. Error: %s' % e)
copy(source, destination)
答案 0 :(得分:4)
shutil.copytree(src, dst)
将一个目录树从src
复制到dst
。它不会自动迭代文件列表。您可以尝试压缩源列表和目标列表以及生成列表的循环:
for src, dst in zip(source, destination):
copy(src, dst)
当您回退到shutil.copy(src, dst)
时,您可能还会遇到问题 - 如果目标目录尚不存在,则会失败。