2015-11-12 3 views
0

Мне нужно использовать список имен файлов из файла CSV для поиска и копирования соответствующих файлов. Ниже приведен код. Я не получаю никаких ошибок, но следующее не дает никаких результатов (я проверил и перепроверял список примеров, который я создал с соответствующими файлами). Любая идея, где я испортился? Я ценю любую помощь. (Я использую последнюю версию Python)Использование списка имен файлов из файла 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

Как выглядит ваш список 'files_to_find'? имеет ли он относительные или абсолютные пути? –

+0

В настоящее время csv состоит из двух ячеек. Список files_to_find печатается как [['1003055716CBR201510.pdf'], ['1003080516CBR201510.pdf']] –

+1

Я думаю, что вы хотите «для file_name в reader: files_to_find.append (имя_файла)». –

ответ

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]) 
+0

Это сработало! Спасибо! Не использовать csvreader, похоже, решил проблему. –

Смежные вопросы