Я пытаюсь написать скрипт для рекурсивного переименования папок и файлов в них. Часть папки будет работать, но мне пришлось запустить ее несколько раз, чтобы удалить все специальные символы (я не смог выяснить условия для цикла while, который будет работать). Тем не менее, он не переименовывает файлы в папках вообще. даже не трогать их. не выдает ошибку или что-либо еще. не уверен почему. любая помощь приветствуется. (Я знаю, что, посмотрев на мой код, вы сможете идентифицировать меня как новичка)
Пытался использовать цикл while, но условия никогда не выполнялись, поэтому он работал бесконечно, фактически не делая ничего. Цикл for будет работать, но мне нужно, чтобы он работал рекурсивно.
import os
import shutil
import fnmatch
#sets veriables and cwd
os.chdir(r"/Users/Xute/Movies/")
cwd = os.getcwd()
filename = os.listdir()
extensions = ('.png', '.jpg', '.txt', '.nfo')
print(cwd)
#prints folders and filenames, removes special characters, renames all to upper
for foldername, subfolders, filenames in os.walk(cwd):
if '.HIDDEN' in foldername:
continue
if '_' in foldername:
newfoldername = foldername.replace('_', ' ')
os.rename(foldername, newfoldername)
elif '.' in foldername:
newfoldername = foldername.replace('.', ' ')
os.rename(foldername, newfoldername)
elif '-' in foldername:
newfoldername = foldername.replace('-', ' ')
os.rename(foldername, newfoldername)
elif '[' in foldername:
newfoldername = foldername.replace('[', '')
os.rename(foldername, newfoldername)
elif ']' in foldername:
newfoldername = foldername.replace(']', '')
os.rename(foldername, newfoldername)
elif '(' in foldername:
newfoldername = foldername.replace('(', '')
os.rename(foldername, newfoldername)
elif ')' in foldername:
newfoldername = foldername.replace(')', '')
os.rename(foldername, newfoldername)
elif ')' in foldername:
newfoldername = foldername.replace(' ', ' ')
os.rename(foldername, newfoldername)
elif foldername is not cwd:
os.rename(foldername, foldername.upper())
else:
continue
print('The current folder is ' + foldername)
#removes txt, image, and info filenames, removes special characters, skips hidden filenames
for filename in filenames:
if filename.endswith('.txt') or filename.endswith('.jpg') or filename.endswith('.png') or filename.endswith('.nfo'):
os.remove(foldername + r"/" + filename)
elif filename.startswith('.'):
continue
elif os.path.isdir('/Users/Xute/Movies/.hidden'):
# skip directories
continue
elif '_' in filename:
newfilename = filename.replace('_', ' ')
os.rename(filename, newfilename)
#elif '.' in filename:
#newfilename = filename.replace('.', ' ')
elif '-' in filename:
newfilename = filename.replace('-', ' ')
os.rename(filename, newfilename)
elif '[' in filename:
newfilename = filename.replace('[', ' ')
os.rename(filename, newfilename)
elif ']' in filename:
newfilename = filename.replace(']', ' ')
os.rename(filename, newfilename)
elif '(' in filename:
newfilename = filename.replace('(', ' ')
os.rename(filename, newfilename)
elif ')' in filename:
newfilename = filename.replace(')', ' ')
os.rename(filename, newfilename)
else:
continue
os.rename(filename, filename.upper())
print(filename)
Я ожидаю, что скрипт переименует все файлы и папки с одинаковыми именами (например, удалит кучу специальных символов и так, чтобы у всех них был только заголовок)