fbpx

Organizar arquivos por extensão com Python

Organizar arquivos em seu computador pode ser uma tarefa cansativa, especialmente quando você faz isso manualmente, algumas pastas (como a pasta Downloads) em seu computador são muito bagunçadas que você nem consegue pesquisar lá.

Neste tutorial, você se envolverá com Python para organizar arquivos por extensão em qualquer pasta em seu computador. Sem mais delongas, vamos começar. Não precisamos de nenhuma biblioteca para instalar, pois usaremos a biblioteca padrão do Python. Importando-os:

import os
import glob
import shutil

Estaremos usando a função shutil.move() do módulo shutil para mover arquivos, e precisamos do glob também para obter uma lista de arquivos correspondentes usando regex. Também usamos o módulo os para lidar com nomes de arquivos.

Como vamos organizar os arquivos por extensão, faz sentido colocar os arquivos do mesmo tipo (como mp3, wav) na mesma pasta (como “áudio”), abaixo do dicionário Python mapeia cada extensão para um digite, sinta-se à vontade para editar de acordo com suas necessidades:

# dicionário mapeando cada extensão com sua pasta correspondente
# Por exemplo, os arquivos 'jpg', 'png', 'ico', 'gif', 'svg' serão movidos para a pasta 'imagens'
# sinta-se à vontade para mudar de acordo com suas necessidades

extensões = {

     "jpg": "imagens",
     "png": "imagens",
     "ico": "imagens",
     "gif": "imagens",
     "svg": "imagens",
     "sql": "sql",
     "exe": "programas",
     "msi": "programas",
     "pdf": "pdf",
     "xlsx": "excel",
     "csv": "excel",
     "rar": "arquivo",
     "zip": "arquivo",
     "gz": "arquivo",
     "tar": "arquivo",
     "docx": "palavra",
     "torrent": "torrent",
     "txt": "texto",
     "ipynb": "python",
     "py": "python",
     "pptx": "powerpoint",
     "ppt": "powerpoint",
     "mp3": "audio",
     "wav": "áudio",
     "mp4": "vídeo",
     "m3u8": "vídeo",
     "webm": "vídeo",
     "ts": "vídeo",
     "json": "json",
     "css": "web",
     "js": "web",
     "html": "web",
     "apk": "apk",
     "sqlite3": "sqlite3",
}

Por exemplo, os arquivos mp4 e m3u8 serão movidos para uma pasta chamada vídeo, os arquivos JSON terão sua própria pasta, etc. Esta não é uma lista completa de extensões, então você deve adicionar mais no seu caso.
Vamos entrar no código agora:

path = r"C:\Users\Luciano Zembruzki\Downloads"
    
for extension, folder_name in extensions.items():
    # Pega todos os arquivos que terminam com a extensão
    files = glob.glob(os.path.join(path, f"*.{extension}"))
    print(f"[*] Encontrados {len(files)} corquivos com extensão '{extension}'")
    
    if not os.path.isdir(os.path.join(path, folder_name)) and files:
        # Cria a pasta se não existir
        print(f"[+] Making {folder_name} folder")
        os.mkdir(os.path.join(path, folder_name))
        
    for file in files:
        # Para cada arquivo, move para a pasta correspondente
        basename = os.path.basename(file)
        dst = os.path.join(path, folder_name, basename)
        
        print(f"[*] Movendo {file} para {dst}")
        shutil.move(file, dst)

Estamos iterando em nosso dicionário que mapeia cada extensão para um tipo de arquivo, obtemos a lista de arquivos de cada extensão e os movemos para a pasta correspondente. Também criamos a pasta usando a função os.mkdir () se ela não existir antes.

A variável de caminho é o caminho da pasta que você deseja organizar, você pode usar os módulos sys ou argparse para passar o caminho da pasta nos argumentos da linha de comando.

Vamos executar isso:

$ python extension_separator.py

Output:

[*] Foram encontrados 17 arquivos com extensão jpg
[+] Fazendo pasta de imagens
[*] Foram encontrados 6 arquivos com extensão png
[*] Foram encontrados 0 arquivos com extensão ico
[*] Foram encontrados 0 arquivos com extensão gif
[*] Foram encontrados 0 arquivos com extensão svg
[*] Foram encontrados 3 arquivos com extensão sql
[+] Fazendo a pasta sql
[*] Encontrados 0 arquivos com extensão exe
[*] Foram encontrados 3 arquivos com extensão msi
[+] Fazendo pasta de programas
[*] Foram encontrados 38 arquivos com extensão pdf
[+] Fazendo pasta de pdf
[*] Foram encontrados 7 arquivos com extensão xlsx
[+] Fazendo pasta excel
[*] Foram encontrados 9 arquivos com extensão csv
[*] Foram encontrados 2 arquivos com extensão rar
[+] Fazendo pasta de arquivo
[*] Foram encontrados 9 arquivos com extensão zip
[*] Foram encontrados 2 arquivos com extensão gz
[*] Encontrados 0 arquivos com extensão tar
[*] Foram encontrados 5 arquivos com extensão docx
[+] Fazendo pasta de palavras
[*] Foram encontrados 11 arquivos com extensão torrent
[+] Fazendo pasta de torrent
[*] Foram encontrados 2 arquivos com extensão txt
[+] Criação de pasta de texto
[*] Foram encontrados 5 arquivos com extensão ipynb
[+] Fazendo a pasta python
[*] Foram encontrados 4 arquivos com extensão py
[*] Foram encontrados 0 arquivos com extensão pptx
[*] Foram encontrados 0 arquivos com extensão ppt
[*] Foram encontrados 0 arquivos com extensão mp3
[*] Foram encontrados 0 arquivos com extensão wav
[*] Encontrado 1 arquivo com extensão mp4
[+] Criação de pasta de vídeo
[*] Foram encontrados 0 arquivos com extensão m3u8
[*] Encontrado 1 arquivo com extensão webm
[*] Encontrados 0 arquivos com extensão ts
[*] Foram encontrados 11 arquivos com extensão json
[+] Fazendo pasta json
[*] Foram encontrados 0 arquivos com extensão css
[*] Foram encontrados 0 arquivos com extensão js
[*] Foram encontrados 0 arquivos com extensão html
[*] Foram encontrados 0 arquivos com extensão apk
[*] Foram encontrados 0 arquivos com extensão sqlite3

Resultado:

Índice

Compartilhar

Facebook
Twitter
LinkedIn

Isto aqui também pode te interessar

Ferramentas
Luciano Zembruzki

Qt Designer

Construa suas interfaces e componentes gráficos mais rápido Para criar suas interfaces no PySide/PyQt, você pode seguir dois caminhos principais: (i) você pode codificar manualmente

Dúvidas
Luciano Zembruzki

Licenças – PySide e PyQt

Tudo o que você precisa saber sobre LGPL e GPL para suas aplicações PySide ou PyQt O PyQt foi desenvolvido por Phil Thompson da Riverbank

PyQt6 vs PySide6
Dúvidas
Luciano Zembruzki

PyQt6 vs PySide6

Qual é a diferença entre as duas bibliotecas Python Qt? Neste post, explicarei exatamente as diferenças entre o PyQt e o Pyside que você precisa

Tutoriais
Luciano Zembruzki

Organizar arquivos por extensão com Python

Organizar arquivos em seu computador pode ser uma tarefa cansativa, especialmente quando você faz isso manualmente, algumas pastas (como a pasta Downloads) em seu computador