2012-10-23 2 views
3
print(path) 
print(dir_name+"\\"+f_parent+"_"+parts[0]+"_"+date+extension) 
os.rename(path, dir_name+"\\"+f_parent+"_"+parts[0]+"_"+date+extension) 

Линии 1 & 2 являются отладки и заявления и их печать:Почему os.rename() создает исключение в Python 2.7?

D:\Doc\Papa\Photos\2012\2012_07_divers\CSC_3709.jpg 
D:\Doc\Papa\Photos\2012\2012_07_divers\2012_07_divers_CSC_3709_2012_07_06_21_04_26.jpg 

Линия 3 поднимает:

File "D:\Doc\Papa\scripts\python\photosort\photosort.py", line 83, in rename 
    os.rename(path, dir_name+"\\"+f_parent+"_"+parts[0]+"_"+date+extension) 
WindowsError: [Error 183] Impossible de créer un fichier déjà existant 

что переводится:

WindowsError: [Error 183] Can not create a file that already exists 
+2

Похоже, что уже есть файл с именем, которое вы хотите переименовать в файл? Вы проверили? – Junuxx

+0

Ну, файл уже существует? – BrenBarn

+0

выглядит, но нет файла с этим именем :) –

ответ

5

На Python 3.3+ вы можете использовать os.replace() вместо os.rename(), чтобы перезаписать существующий файл и избежать ошибки в Windows.

На старых версиях Python можно эмулировать os.replace() с помощью модуля ctypes:

# MOVEFILE_REPLACE_EXISTING = 0x1; MOVEFILE_WRITE_THROUGH = 0x8 
ctypes.windll.kernel32.MoveFileExW(src, dst, 0x1) 

Смотрите, как atomicfile.atomic_rename() реализован на Windows.

0

имя, которое вы попытка использовать уже принадлежит чему-то. То есть, уже есть файл с именем:

D:\Doc\Papa\Photos\2012\2012_07_divers\2012_07_divers_CSC_3709_2012_07_06_21_04_26.jpg 

Добавить проверку вашей функции

3

Из Windows system error codes list:

ERROR_ALREADY_EXISTS

183 (0xB7)

Не может создайте файл, когда этот файл уже существует.

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

В бонусной совет: Используйте функцию os.path.join() правильно соединить пути:

os.path.join(dir_name, '{0}_{1}_{2}{3}'.format(f_parent, parts[0], date, extension)) 

Я также использовал string formatting для создания файла.

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