Перемещение файлов после обработки

Привет. Пытаюсь переместить журналы, обработка которых завершена, но я думаю, что неправильно использую Shutil.

import shutil

path = '/logs/'
finDir = '/complete/'

# parse loop
def getUniquePath(path):
    for filename in os.listdir(path):
       if..processing log 
       shutil.move(filename, finDir) #moves completed files

Я продолжаю получать ошибки, что файл не существует.

Поэтому я добавил оператор печати после цикла, и он правильно распечатывает имя файла и место назначения, поэтому я думаю, что просто неправильно использую Shutil.move.

Спасибо


person chowpay    schedule 23.02.2017    source источник
comment
попробуйте сначала сделать os.chdir(path_to_file).   -  person lycuid    schedule 23.02.2017


Ответы (1)


Вам нужно объединить path с filename, если только вы не находитесь в каталоге /logs/.

В противном случае поиск файлов выполняется в текущем каталоге; которые приводят к тому, что файл не найден, или неправильное обращение с файлом (если в текущем каталоге был файл с таким же именем)

Используя os.path.join:

import os
import shutil

path = '/logs/'
finDir = '/complete/'

# parse loop
def getUniquePath(path):
    for filename in os.listdir(path):
       ..
       shutil.move(os.path.join(path, filename), finDir)
       #           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
person falsetru    schedule 23.02.2017
comment
Ах здорово, это выглядит здорово. Будет ли Shutil.move учитывать, скажем, файл существует в целевом каталоге? Имеет ли смысл для меня добавить условие Try: на ходу, если есть ошибка, которую я хотел бы продолжить. Что было бы лучшим способом для этого? @falsetru - person chowpay; 23.02.2017
comment
это так странно. Поэтому я добавил try: shutil.move(os.path.join(path, filename), finDir) except : pass , и только 1 файл был перемещен. Если я удалю попытку и, кроме того, все будет перемещено через @falsetru - person chowpay; 24.02.2017
comment
@chowpay, пожалуйста, разместите отдельный вопрос с обновленным кодом. - person falsetru; 24.02.2017