1. Introdução
Como uma pessoa que está apenas começando a aprender Python, tento adquirir novos conhecimentos e habilidades através da prática direta. Na minha opinião, essa abordagem é melhor do que elaborar guias de programação e multi-volumes. Primeiro de tudo, com projetos como o que falarei, estou tentando fechar minhas necessidades. Em segundo lugar, está a esperança de que outra pessoa possa ser útil para o que eu crio (
depois que todos os erros existentes foram corrigidos )
A idéia desse programa surgiu no momento em que eu tentava encontrar um arquivo baixado anteriormente entre o "lixo" formado na pasta "Downloads". Imagens, documentos, arquivos e vídeos com música: você pode entender essa confusão e filtrar arquivos, é claro, mas está relutante por causa dos grandes custos de tempo. E achei bom ter um programa que analise a pasta "Downloads" e distribua os arquivos nas pastas padrão dos sistemas "Imagens", "Documentos", "Vídeos" e "Música" e exclua arquivos desnecessários. Como resultado, nasceu o Organizador Perfeccionista, sobre o qual gostaria de falar. Devo dizer imediatamente que este é um artigo de iniciantes a iniciantes, porque programadores experientes em Python não encontrarão nada útil aqui (
exceto a capacidade de cavar no código e apontar muitos erros ).
Ideia geral
A primeira coisa que um programa deve fazer é determinar em qual sistema operacional está sendo executado. Isso é necessário porque no Linux e no Windows a pasta Downloads está localizada de maneiras diferentes (não tenho a capacidade de testar o programa em um Mac, porque não levei em consideração esse SO). Na pasta de download detectada, o programa percorre todos os arquivos disponíveis e determina a que tipo eles pertencem (música, vídeo, documentos, etc.). Depois disso, os arquivos detectados são movidos para as pastas padrão e o programa descobre pelo usuário o que fazer com os arquivos que não são adequados para movimentação - deixe ou exclua.
Importe as bibliotecas necessárias e determine o tipo de sistema
Para trabalhar com o sistema operacional e os arquivos nele, precisamos da biblioteca
os . A biblioteca
getpass informará o nome de usuário no sistema e a
plataforma determinará se é Windows ou Linux. Conectamos todas as bibliotecas necessárias desde o início através da importação e, em seguida, determinamos o tipo e o nome de usuário do SO.
import os import getpass import platform type_os = platform.system() usermane = getpass.getuser()
Criando um dicionário com extensões de arquivos populares e pastas padrão associadas a eles
Usando ferramentas padrão do Python, criamos quatro dicionários com os tipos de arquivos mais populares: músicas, imagens, vídeos e documentos.
video_folder = {".3gp" : "/", ".avi" : "/", ".flv" : "/", ".m4v" : "/", ".mkv" : "/", ".mov" : "/", ".mp4" : "/", ".wmv" : "/", ".webm" : "/"} music_folder = {".mp3" : "/", ".aac": "/", ".flac" : "/", ".mpc" : "/", ".wma" : "/", ".wav" : "/"} pic_folder = {".raw" : "/", ".jpg" : "/", ".tiff" : "/", ".psd" : "/", ".bmp" : "/", ".gif" : "/", ".png" : "/", ".jp2" : "/", ".jpeg" : "/"} doc_folder = {".doc" : "/", ".docx" : "/", ".txt" : "/", ".rtf" : "/", ".pdf" : "/", ".fb2" : "/", ".djvu" : "/", ".xls" : "/", ".xlsx" : "/", ".ppt" : "/", ".pptx" : "/", ".mdb" : "/", ".accdb" : "/", ".rar" : "/", ".zip" : "/", ".7z" : "/"}
Não esqueça que após o nome da pasta, o nome do arquivo continuará, porque no final eu tenho /. Novos tipos de arquivo são facilmente adicionados editando o dicionário.
Pedimos ao usuário o nome da pasta de download
No Windows e Linux, a pasta de download aparece no sistema com nomes diferentes. No Windows, independentemente da localização da pasta Downloads, nas distribuições Linux, essa pasta é chamada de "Downloads". Além disso, pode acontecer que o usuário altere o nome da pasta com os arquivos baixados e você precise perguntar se o nome atual do diretório difere dos nomes padrão.
if type_os == "Linux": user_downloads_path = input(" ? (-: ) ") or "" if type_os == "Windows": user_downloads_path = input(" ? (-: ) ") or "Downloads"
A construção
ou permite que você use os valores padrão na
entrada . Ou seja, se o usuário não tiver alterações no nome da pasta com downloads, não há necessidade de fazer nada, o próprio programa substituirá os valores necessários no código adicional.
Defina o caminho para a pasta de download
Dependendo do sistema operacional, a pasta de download pode estar localizada em locais diferentes. Para Linux, esta pasta está localizada no caminho
/ home / nome de usuário / Downloads / , no Windows é o caminho
C: / Usuários / nome de usuário / Downloads / . Para não prescrever esses caminhos manualmente mais tarde, é mais fácil criar variáveis nas quais esses caminhos serão especificados.
if type_os == "Linux": default_path_d = "/home/" + usermane + "/" + user_downloads_path + "/" else: default_path_d_win = r"C:/Users/" + usermane + r"/" + user_downloads_path+ r"/"
Defina o caminho para a pasta de download para um usuário específico
Para usar ainda mais os recursos dos módulos conectados anteriormente para trabalhar com o sistema operacional e os arquivos, devemos definir o caminho para a pasta de download usando as variáveis que criamos e recebemos anteriormente.
if type_os == "Linux": downloads_path = os.listdir("/home/" + usermane + "/" + user_downloads_path) else: downloads_path_win = os.listdir(r"C:/Users/" + usermane + r"/" + user_downloads_path)
Bem, também para facilitar o uso adicional do código, definimos o caminho do formulário
/ pasta pessoal / nome de usuário if type_os == "Linux": default_path_u = "/home/" + usermane + "/" else: default_path_u_win = r"C:/Users/" + usermane + r"/"
Verifique se há arquivos específicos na pasta de download
Ao enumerar o dicionário, comparamos suas chaves com as extensões de arquivo que estão na pasta de download. Se a extensão corresponder à chave, o arquivo necessário deverá ser movido para a pasta padrão correspondente (cujo nome é o valor no dicionário).
Inicialmente, planejei resolver o problema de encontrar extensões de arquivo usando expressões regulares e fui envolvido em sua formulação. Mas então eu li em um dos sites que, se você quiser resolver um problema, apenas a última coisa que você precisará usar expressões regulares. O Python tem outras maneiras mais fáceis e intuitivas de fazer o que é necessário para você. Portanto, em vez dessas expressões, a extensão do arquivo é determinada usando o método de string
endswith () . Ele pega a chave do dicionário e verifica se o arquivo termina com ela. Em seguida, usando o método
split () , apenas o nome do arquivo é usado para movimentos adicionais usando
os.rename () . Como argumentos deste último, todas as variáveis criadas anteriormente são usadas.
Pedimos ao usuário o que fazer com os arquivos restantes.
Após a classificação dos arquivos necessários, o programa deve finalizar ou excluir os arquivos que não se enquadram na movimentação (por exemplo, arquivos exe ou pacotes deb). A decisão é tomada pelo usuário e, por padrão, a exclusão não ocorre.
Resumir
Tentei explicar como o programa que eu criei funcionava da maneira mais clara possível. Mas acho que quem quiser entender ainda revisará o código várias vezes. O Organizador Perfeccionista está disponível em duas versões - console e gráfica. Você pode encontrar os dois no link para o
meu Github e há instruções sobre como baixar e usar o programa. Executei a versão do console no meu sistema operacional principal (Archlinux) e a versão da GUI em uma máquina virtual no Windows 7. Nos dois casos, o programa funcionou muito bem. Também quero anexar uma demonstração de como funciona no Linux. Se este tópico for interessante para alguém, no próximo artigo, mostrarei como fiz a versão da GUI e que dificuldades encontrei.
Demonstração do Organizador Perfeccionista Planos futuros
O próximo da fila é um programa que lembrará eventos importantes da tabela do Planilhas Google no Telegram. Assim que terminar, vou contar aqui. Você pode deixar qualquer pergunta e feedback sobre o trabalho do Organizador Perfeccionista nos comentários ou no PM. Obrigado pela atenção!