Как организовать файлы по расширению в Python

Как организовать файлы по расширению в Python

Как организовать файлы по расширению в Python

Организация файлов на компьютере может быть утомительной задачей, особенно когда это делается вручную. Некоторые папки (например, папка «Загрузки») на компьютере часто забиты так, что мы не всегда можем найти то что нам нужно. В данной статье Вы узнаете как с помощью языка Python и его встроенных средств организовать размещение файлов по папкам в соответствии с их расширениями.

И так, давайте начнем. Как мы уже сказали выше, нам не понадобится для установки ничего, кроме стандартной библиотеки Python 3. Импортируем модули:


import os
import glob
import shutil

Мы будем использовать функцию shutil.move() из модуля shutil для перемещения файлов, и нам также понадобится модуль globe, чтобы получить список совпадающих файлов с помощью регулярного выражения. Мы также используем модуль os для обработки имен файлов.

Поскольку мы собираемся упорядочивать файлы по расширению, имеет смысл размещать файлы одного типа (например, mp3, wav) в одной папке (например, «аудио»). Ниже словарь Python сопоставляет каждое расширение с типом.:

extensions = {
    "jpg": "изображения",
    "png": "изображения",
    "ico": "изображения",
    "gif": "изображения",
    "svg": "изображения",
    "sql": "SQL_",
    "exe": "Программы",
    "msi": "Программы",
    "pdf": "pdf",
    "xlsx": "Эксель",
    "csv": "Эксель",
    "rar": "Архивы",
    "zip": "Архивы",
    "gz": "Архивы",
    "tar": "Архивы",
    "docx": "ВОРД",
    "txt": "Текст",
    "py": "python",
    "pptx": "powerpoint",
    "ppt": "powerpoint",
    "mp3": "аудио",
    "wav": "аудио",
    "mp4": "видео",
    "m3u8": "видео",
    "webm": "видео",
    "ts": "видео",
    "json": "json",
    "css": "web",
    "js": "web",
    "html": "web",
    "apk": "apk",
    "sqlite3": "sqlite3",
}

Так, файлы mp4 и m3u8 будут помещены в папку видео и так далее. Данный список не окончателен и может быть расширен.

Перейдем к следующему фрагменту кода.


    # путь к целевой папке
    path = r"С:Downloads"
    verbose = 1
    for extension, folder_name in extensions.items():
        # найдем все файлы подходящие по расширению 
        files = glob.glob(os.path.join(path, f"*.{extension}"))
        print(f"[*] Найдено {len(files)} файлов с {extension} расширением")
        if not os.path.isdir(os.path.join(path, folder_name)) and files:
            # создание новой директории
            print(f"[+] Создание папки {folder_name}")
            os.mkdir(os.path.join(path, folder_name))
        for file in files:
            # Для каждого файла с соответствующим расширением помещаем его в нужную папку
            basename = os.path.basename(file)
            dst = os.path.join(path, folder_name, basename)
            if verbose:
                print(f"[*] перемещение  {file} в {dst}")
            shutil.move(file, dst)

Мы перебираем наш словарь, который сопоставляет каждое расширение с типом файла, получаем список файлов каждого расширения и перемещаем их в соответствующую папку. Мы также создаем папку с помощью функции os.mkdir(), если она ранее не существовала.

Переменная path — это путь к папке, которую вы хотите упорядочить, вы можете использовать модули sys или argparse для передачи пути к папке через cmd.

Запустим скрипт.


>>>python ext_sep.py

'''
вывод:
[+] Найдено 0 файлов с расширением .jpg
[+] Найдено 2 файлов с расширением .png
[+] Создаем папки изображения
[+] Найдено 0 файлов с расширением .ico
[+] Найдено 0 файлов с расширением .gif
'''

Результат:

Как организовать файлы по расширению в Python

Если теперь понадобится найти или удалить нужный файл в какой либо папке, то Python3 и его стандартная библиотека существенно упростят нашу задачу.

Источник