Я уверен, что я не единственный, у кого есть дюжина папок с тоннами несортированных файлов. Фильмы, книги, музыка, документы в одной и той же папке. Мы просто продолжаем загружать вещи, и прежде чем мы узнаем это, наша папка загрузки – это беспорядок. Вы узнаете это?
Если вы это сделаете, позор вам! Как вы можете позволить этому случиться. Во всяком случае, давайте не будем тратить время на то, чтобы обвинять друг друга.
У меня есть ОКР, когда дело доходит до организации файла. Я сортирую свои фильмы с актерами, год выпуска, жанр и т. Д. Тем не менее, это может быть сложной и утомительной задачей, чтобы проверить и сортировать файлы, особенно если у вас так много файлов. Зачем тратить свое время, проходя через каждую папку и сортировать каждый файл по типу файла, когда мы можем позволить Python позаботиться об этом для нас. Это может не сделать все, что вы хотите, но это будет действительно хороший первый шаг.
Без лишних слов, давайте доберемся до кода
Первое, что мы делаем, это импортировать ОС
и Shutil
модули.
Shutil
Модуль предлагает ряд высокоуровневых операций на файлах и коллекциях файлов. В частности, предоставляются функции, которые поддерживают копирование и удаление файла.
В сочетании с тем фактом, что мы можем использовать ОС
Модуль Для решения проблем, связанных с пути, мы можем автоматизировать весь процесс перемещения файлов в папки, которые мы хотим.
Теперь давайте напишем функцию, которая будет содержать логику для перемещения и создания новых каталогов при необходимости.
def Organizer(path, userSelection): if os.path.exists(path): for file in os.listdir(path): filePath = os.path.join(path, file) if os.path.isdir(filePath): pass filename, fileExtension = os.path.splitext(filePath) if fileExtension in userSelection: relocatingPath = os.path.join( path, userSelection[fileExtension]) if not os.path.exists(relocatingPath): os.makedirs(relocatingPath) try: shutil.move(filePath, relocatingPath) except OSError as error: print('''Something unexpected happened! Error message:''', error) print("\n\tYour files are sorted Successfully!")
Как видите, наша функция имеет два параметра: Путь
, Пользовательская селекция
. Мы будем определять оба через мгновение.
Давайте рассмотрим минутку и поговорим о том, как мы собираемся реализовать логику для обработки файлов.
Мы собираемся получить предопределенный словарь AdensationSet
Для наиболее распространенных типов файлов.
Словарь будет иметь расширения файлов (то есть.py ‘, ‘.исполняемый’ , ‘.mp4’ …) в качестве имен ключей и папок (т.е. Фильмы, документы …) как ценности.
extenstionSet = { ".docx": "Documents", ".xslx": "Documents", ".pdf": "Documents", ".csv": "Documents", ".xlsx": "Documents", ".zip": "Compressed", ".rar": "Compressed", ".mp3": "Musics", ".m4a": "Musics", ".ogg": "Musics", ".wav": "Musics", ".jpg": "Pictures", ".png": "Pictures", ".gif": "Pictures", ".tif": "Pictures", ".mp4": "Videos", ".mkv": "Videos", ".3gp": "Videos", ".mpeg4": "Videos", }
Теперь давайте напишем код, который введет путь папки, который будет организован в качестве ввода пользователя.
path = input('''\tPaste the path you want to organize >>> ''') while not os.path.exists(path): print('''\n\tThe path you entered doesn\'t exist. Make sure there aren\'t spelling errors and enter the correct path. ''') path = input('''\n\tPaste the path you want to organize >>> ''')
Мы хотим предоставить пользователю два варианта:-
- Сортируйте все файлы в каталоге, используя предопределенные
ExtensionSet
Словарь - Сортируйте определенные файлы, введя пользовательский набор расширений файлов. С нашего
ExtensionSet
Иметь ограниченное количество расширений, эта опция позволит им сортировать файлы с любым расширением.
Для этого мы создадим пустой словарь для хранения выбранных пользовательских расширений и создания меню, которое позволит пользователю выбирать из двух вышеупомянутых вариантов.
userSelection = {} userMenu = 0 while userMenu == 0: userMenu = input(''' In what way do you want to organize. 1). Organize all files in the directory. 2). Organize files of certain extensions in the directory. >>> ''') if userMenu == '1': userSelection = extenstionSet elif userMenu == '2': ext = input('''\n\tEnter the extensions you want to organize preceeded by a period and separated by space. For-example:- '.py .json .csv' >>> ''') folderName = input('''\n\tEnter a folder name of your choice for the selected extensions >>> ''') for i in ext.split(): userSelection[i] = folderName else: print(f'''\n\tYou have entered an invalid input of {userMenu} Please enter a valid input from the options provided. \n''') userMenu = 0
Теперь, когда все отсортировано, все, что осталось, это называют нашей функцией.
if __name__ == "__main__": Organizer(path, userSelection)
Вы можете найти сценарий здесь: https://github.com/nabroleonx/automated-file-organizer Не забудьте оставить звезду, если вам это нравится 😉
П.с. То, что я сделал, это просто базовая реализация. Тем не менее, я буду добавлять новые функции в сценарий. Быть в курсе!
Это сегодня сегодняшний блог. Спасибо, что придерживались конца. Я писатель Noob, который пытается поднять свою игру, поэтому любые комментарии/предложения были оценены. Я надеюсь опубликовать много информативного содержимого в будущем, если вы заинтересованы, следуйте за мной за большим.
Оригинал: “https://dev.to/nabroleonx/file-organizer-using-python-iel”