使用CSV文件中的文件名列表,使用Python查找和复制文件

时间:2015-11-12 19:20:47

标签: python csv

我需要使用CSV文件中的文件名列表来查找和复制相应的文件。下面是代码。我没有得到任何错误,但以下不会产生任何结果(我检查并重新检查了我用适当的文件创建的示例列表)。知道我搞砸了吗?我感谢任何和所有的帮助。 (我正在使用最新版本的Python)

import os, shutil, csv

files_to_find = []
with open('C:\\pdfsearch.csv') as fh:
    reader = csv.reader(fh)
    files_to_find = list(reader)

for root, dirs, files in os.walk('C:\\mail'):
    for _file in files:
        if _file in files_to_find:
            print ('Found file in: ') + str(root)
            shutil.copy(os.path.abspath(root + '/' + _file), 'C:\\Matches')

1 个答案:

答案 0 :(得分:1)

问题是csvreader会返回行,因此您最终会得到一个列表列表...因此,您需要['1003055716CBR201510.pdf', '1003080516CBR201510.pdf']而不是[['1003055716CBR201510.pdf'], ['1003080516CBR201510.pdf']]的输出

不要使用csvreader

_files_to_find=set(open("pdfsearch.csv").read().splitlines(False))

或者取每行的第一个元素

with open('C:\\pdfsearch.csv') as fh:
    reader = csv.reader(fh)
    for row in reader:
        _files2find.append(row[0])