2016-01-13 5 views
1

В настоящее время я пытаюсь изучить python, написав скрипт, который очистит мою папку загрузки, сохранив имя объекта, удалив специальные символы и дополнительные данные из имени папки/файла.Переименовать файлы в каталоге Windows

т.е.

../Completed Downloads/random.download.here.x264.team 
../Completed Download/random download here 

, а также

file.name.randomstring_randomstring.mkv 
file name randomstring randomstring (date).mkv 

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

Traceback (most recent call last): 
    File "C:\Python27\Scripts\plexprep.py", line 7, in <module> 
    os.rename(dir, dir.replace(".", "").lower()) 
WindowsError: [Error 2] The system cannot find the file specified 

вот начало моего сценария:

import fnmatch 
import os 

#Matches directories for Plex and renames directories to help Plex crawl. 
for dir in os.listdir('F:\Downloads\Completed Downloads'): 
    if fnmatch.fnmatch(dir, '*'): 
     os.rename(dir, dir.replace(".", "").lower()) 

#Matches filenames for Plex and renames files/subdirectories to help Plex crawl. 
+0

Я не прошу кого-то сделать это для меня, просто укажите мне в правильном направлении, пожалуйста. – ohm

+0

Итак, вы хотите заменить точки в имени файла, кроме последней точки? – sln

+0

хорошо, как я просматриваю свои файлы/каталоги, так что расширения отображаются так, что .mkv всегда присутствует для меня. Итак, я прекрасно удаляю все периоды из имени каталога/файла, а также статические вещи, такие как «x264» или так далее. Я полагаю, что мне нужно создать кортежи или список, чтобы запустить их, но я еще не совсем там, в скрипте. – ohm

ответ

0

Как @ cricket_007 сказал в комментарии, вы должны избежать обратной косой черты, добавив r перед пути:

for dir in os.listdir(r'F:\Downloads\Completed Downloads'): 

Однако WindowsError вызвано чем-то другим: в цикле, dir будет только имя вложенной папки, но не полный путь к ней. Возможным решением может быть:

base = r'F:\Downloads\Completed Downloads' 
for dir in os.listdir(base): 
    path = os.path.join(base, dir) 
    # Now use your os.rename() logic 

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

  • Нет связанных вопросов^_^