Форум сайта python.su
0
путь указан абсолютный, что не так? проясните пожалста
import os import re #path = input("The path to the folder: ") path = r'D:\temp\files' ListFiles = os.listdir(path) LenList = len(ListFiles) t_data = [] os.chdir(path) for i in range (0, LenList): pat = r'(.*) - (\d+) (.*) \((\d+)\)\.mp3' t_data = re.search(pat, ListFiles[i]).groups() final_name = 'Bob Dylan' + '/' + t_data[3] + ' ' + t_data[0] + '/' + t_data[1] + ' ' + t_data[2] + '.mp3' os.rename(ListFiles[i], final_name)
C:\Users\Serge\AppData\Local\Programs\Python\Python37-32\python.exe C:/Users/Serge/PycharmProjects/ptn_1/task_4.py Traceback (most recent call last): File "C:/Users/Serge/PycharmProjects/ptn_1/task_4.py", line 14, in <module> os.rename(ListFiles[i], final_name) FileNotFoundError: [WinError 3] Системе не удается найти указанный путь: "Bob Dylan - 02 Talkin' New York (1962).mp3" -> "Bob Dylan/1962 Bob Dylan/02 Talkin' New York.mp3"
Офлайн
857
os.rename() не создаёт директории, она только с файлом работает. Сначала нужно создать все директории через os.mkdir().
Можно использовать модуль shutil для работы с файлами и директориями. Там многие вещи уже собраны вместе.
Отредактировано py.user.next (Фев. 21, 2019 00:52:27)
Офлайн
0
py.user.next
os.rename() не создаёт директории, она только с файлом работает. Сначала нужно создать все директории через os.mkdir().
os.rename(os.path.join(path, ListFiles[i]), os.path.join(path,final_name))
FileNotFoundError: [WinError 3] Системе не удается найти указанный путь: "D:\\temp\\files\\Bob Dylan - 02 Talkin' New York (1962).mp3" -> "D:\\temp\\files\\Bob Dylan/1962 Bob Dylan/02 Talkin' New York.mp3"
Офлайн
0
попробовал shutil
shutil.copy2(ListFiles[i], final_name)
FileNotFoundError: [Errno 2] No such file or directory: "Bob Dylan/1962 Bob Dylan/01 You're No Good.mp3"
Офлайн
568
Fixx_Jr
Попробуйте заэкранировать “/” в названии файла. Вообще, чтобы исключить траблы с именами поэкспериметрируйте сначала на простых именах одним словом латиницей.
Офлайн
294
Fixx_Jr в винде имя файла не может содержать символ “/”, этот символ зарезервирован как разделитель ключей командного интерпретатора, вот оно вам и ругается.
также имя файла не может содержать символы :, *, ?, ", < , > , |
Допустимо, но нежелательно использвание символов %, ! и @ изза возможных проблем в широко распространённых компонентах.
подробнее читайте в https://docs.microsoft.com/en-us/windows/desktop/fileio/naming-a-file
[code python][/code]
Отредактировано PEHDOM (Фев. 21, 2019 09:38:22)
Офлайн
0
PEHDOM
Fixx_Jr в винде имя файла не может содержать символ “/”
Офлайн
294
Fixx_Jrда,да, тольк задачао стояла для линукс(фряху, солярку вобшем юникс-лайк ОС), в котором “/” используеться для разделителя каталогов(и обозначения корневого каталога), и код должен переместить файлы в подкаталог “Bob Dylan” в котором каталог “1962 Bob Dylan” в котором файл “01 You're No Good.mp3”
начит какое-то решение у неё должно быть. наверно специально, что озадачить ))
[code python][/code]
Отредактировано PEHDOM (Фев. 21, 2019 16:09:20)
Офлайн
0
теперь понял, где я тормознул ))
спасибо
Офлайн