Проблема только в перемещении файлов, а не каталогов - PullRequest
0 голосов
/ 30 мая 2019

Попытка переместить файлы из logfile_directory в tmp_directory в блоках по 7 с использованием random.sample.Если в папке менее 7 файлов, она просто переместит оставшиеся файлы.Однако, когда я пытаюсь переместить менее 7 файлов, я получаю сообщение об ошибке, поскольку tmp_folder пытается скопировать в себя.

Попытка с использованием команды glob.glob, но она также не может работать.Не уверен, что я делаю неправильно, просто перемещаю файлы, а не папку.Буду признателен за любую помощь.

Запуск одного и того же кода на другом компьютере и получение следующего сообщения, где, как и раньше, сообщение об ошибке было связано с копированием tmp_folder в себя.Ничего особенного в этом файле нет, он создает ошибку, поэтому не знаю, почему я сейчас получаю это.

Message = [WinError 5] Доступ запрещен: 'c: \ securelog_test \ bdlog.txt' Source= C: \ Users \ jarra \ source \ repos \ archive_test \ archive_test.py StackTrace: файл "\ archive_test.py", строка 72, в shutil.move (путь, tmp_folder)

logfile_directory = 'c:\\securelog_test\\'
archive_folder = 'c:\\securelog_archive\\'
workfiles_folder = 'c:\\securelog_workfiles\\'
tmp_folder = 'c:\\securelog_test\\temp\\'
completed_folder = 'c:\\securelog_test\\completed\\'

#count how many files are in the log file folder
onlyfiles = [f for f in listdir(logfile_directory) if isfile(join(logfile_directory, f))]
print('-----------------')
print (len(onlyfiles))

if len(onlyfiles) > 7:
    #move 7 random files to the temp folder for archiving
    files = os.listdir(logfile_directory)
    for fileName in random.sample(files, min(len(files), 8)):
        path = os.path.join(logfile_directory, fileName)
        shutil.move(path, tmp_folder)
else:
    #if there are less than 7 files move them
    #for file in glob.glob(logfile_directory):
    #    shutil.move(file, tmp_folder)
    for fileName in os.listdir(logfile_directory):
        path = os.path.join(logfile_directory, fileName)
        shutil.move(path, tmp_folder)     

Ответы [ 2 ]

0 голосов
/ 31 мая 2019

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

logfile_directory = 'c:\\securelog\\securelog_test\\'
archive_folder = 'c:\\securelog\\securelog_archive\\'
workfiles_folder = 'c:\\securelog\\securelog_workfiles\\'
tmp_folder = 'c:\\securelog\\temp\\'
completed_folder = 'c:\\securelog\\completed\\'
0 голосов
/ 30 мая 2019

проверьте текущий путь к каталогу и попробуйте распечатать его для каждой итерации, которую вы получили, где происходит ошибка.

...