Рубрики
Без рубрики

Автоматический организатор файлов с помощью Python

Я уверен, что я не единственный, у кого есть дюжина папок с тоннами несортированных файлов. Фильмы, книги, … Tagged с помощью Python, программирования, производительности.

Я уверен, что я не единственный, у кого есть дюжина папок с тоннами несортированных файлов. Фильмы, книги, музыка, документы в одной и той же папке. Мы просто продолжаем загружать вещи, и прежде чем мы узнаем это, наша папка загрузки – это беспорядок. Вы узнаете это?

Если вы это сделаете, позор вам! Как вы можете позволить этому случиться. Во всяком случае, давайте не будем тратить время на то, чтобы обвинять друг друга.

У меня есть ОКР, когда дело доходит до организации файла. Я сортирую свои фильмы с актерами, год выпуска, жанр и т. Д. Тем не менее, это может быть сложной и утомительной задачей, чтобы проверить и сортировать файлы, особенно если у вас так много файлов. Зачем тратить свое время, проходя через каждую папку и сортировать каждый файл по типу файла, когда мы можем позволить 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 
    >>> ''')

Мы хотим предоставить пользователю два варианта:-

  1. Сортируйте все файлы в каталоге, используя предопределенные ExtensionSet Словарь
  2. Сортируйте определенные файлы, введя пользовательский набор расширений файлов. С нашего 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, который пытается поднять свою игру, поэтому любые комментарии/предложения были оценены. Я надеюсь опубликовать много информативного содержимого в будущем, если вы заинтересованы, следуйте за мной за большим.

Twitter | LinkedIn | GitHub

Оригинал: “https://dev.to/nabroleonx/file-organizer-using-python-iel”