我需要使用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')
答案 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])