2015-04-21 2 views
-1

Я пытался написать код python, чтобы получить каждую строку из файла .txt и найти файл с таким именем в папке и вложенных папках. После этого я хочу переместить этот файл в заданную папку назначения.поиск и перемещение файлов с использованием python

Я попытался следующий код, который был размещен только на переполнение стека, но это не похоже на работу, и я не в состоянии выяснить problem.Any помощь будет высоко оценен:

import os 
import shutil 

def main(): 
    destination = '/Users/jorjis/Desktop/new' 

    with open('/Users/jorjis/Desktop/articles.txt', 'r') as lines: 
     filenames_to_copy = set(line.rstrip() for line in lines) 

     for root, _, filenames in os.walk('/Users/jorjis/Desktop/folder/'): 
      for filename in filenames: 
       if filename in filenames_to_copy: 
        shutil.copy(os.path.join(root, filename), destination) 
+0

Отслеживать ('print') некоторые из ключевых переменных, чтобы увидеть, что происходит. Я бы начал с 'filenames_to_copy',' filename' и 'filenames'. Если вы не получаете сообщений об ошибках, возможно, это не поиск файлов. – cdarke

+0

Отметьте первые 3 строки кода: «destination ...», «with ...», «filenames_to_copy» ... (SO не позволит мне это сделать !! grr). Эффект заключается в том, что файл будет снова закрыться после прочтения его содержимого. Затем добавьте 'print filenames_to_copy', чтобы узнать, читаются ли какие-либо имена файлов и какой формат они есть. – user1016274

+0

@ user1016274: возникла проблема с filenames_to_copy, и она напечатала только последнюю строку файла и что разрешить эту проблему – goshanky

ответ

0

Без любой результат отладки (который вы теперь получили) Я могу только догадываться о общей ловушке os.walk: имена файлов, возвращаемые в filenames, - это просто имена файлов без какого-либо пути. Если ваш файл содержит имена файлов с путями, они никогда не будут совпадать. Используйте это вместо:

if os.path.join(root, filename) in filenames_to_copy: 
    shutil.copy(os.path.join(root, filename), destination) 
+0

это изменение не работает – goshanky

+0

Не могли бы вы уточнить? Что такое сообщение об ошибке? Измените свой пост и покажите несколько строк файла «articles.txt». – user1016274