Scripts Python para excluir os arquivos regularmente

Limpar o sistema de arquivos regularmente manualmente não é bom. Automatize-os!


Excluir arquivos e pastas manualmente não é uma tarefa interessante, como se pode pensar. Faz sentido automatizá-los.

Aí vem o Python para facilitar nossas vidas. Python é uma excelente linguagem de programação para scripts. Vamos aproveitar o Python para concluir nossa tarefa sem nenhum obstáculo. Primeiro, você deve saber por que o Python é uma boa escolha.

  • Python é uma linguagem favorita de todos os tempos para automatizar tarefas
  • Menos código em comparação com outras linguagens de programação
  • Python é compatível com todos os sistemas operacionais. Você pode executar o mesmo código no Windows, Linux e Mac.
  • O Python possui um módulo chamado os que nos ajuda a interagir com o sistema operacional. Vamos usar este módulo para concluir nossa automação de exclusão dos arquivos.

Podemos substituir qualquer tarefa irritante ou repetitiva do sistema usando Python. Escrever scripts para concluir uma tarefa específica do sistema é um cupcake, se você conhece Python. Vejamos o seguinte caso de uso.

Nota: o seguinte é testado no Python 3.6+

Removendo arquivos / pastas com mais de X dias

Geralmente, você não precisa de logs antigos e precisa limpá-los regularmente para disponibilizar armazenamento. Poderia ser qualquer coisa e não apenas logs.

Temos um método chamado stat no módulo os que fornece detalhes do último acesso (st_atime), modificação (st_mtime), e modificação de metadados (st_ctime) Tempo. Todos os métodos retornam o tempo em segundos desde a época. Você pode encontrar mais detalhes sobre a época aqui.

Usaremos um método chamado os.walk (path) para percorrer as subpastas de uma pasta.

Siga as etapas abaixo para escrever o código para os arquivos / pastas de exclusão com base no número de dias.

  • Importar os módulos tempo, sistema operacional
  • Defina o caminho e os dias para as variáveis
  • Converta o número de dias em segundos usando time.time () método
  • Verifique se o caminho existe ou não está usando o os.path.exists (caminho) módulo
  • Se o caminho existir, obtenha a lista de arquivos e pastas presentes no caminho, incluindo subpastas. Use o método os.walk (caminho), e retornará um gerador contendo pastas, arquivos e subpastas
  • Obtenha o caminho do arquivo ou pasta juntando o caminho atual e o nome do arquivo / pasta usando o método os.path.join ()
  • Pegue o ctime de os.stat (caminho) método usando o atributo st_ctime
  • Compare o ctime com o tempo que calculamos anteriormente
  • Se o resultado for maior que os dias desejados do usuário, verifique se é um arquivo ou uma pasta. Se for um arquivo, use o os.remove (caminho) senão use o shutil.rmtree () método
  • Se o caminho não existir, imprima a mensagem não encontrada

Vamos ver o código em detalhes.

# importando os módulos necessários
importação os
fechadura de importação
hora de importação

# função principal
def main ():

# inicializando a contagem
delete_folders_count = 0
delete_files_count = 0

# especifique o caminho
path = "/ PATH_TO_DELETE"

# especifique os dias
dias = 30

# conversão de dias em segundos
# time.time () retorna a hora atual em segundos
segundos = time.time () – (dias * 24 * 60 * 60)

# verificando se o arquivo está presente no caminho ou não
se os.path.exists (caminho):

# iterando sobre todas as pastas e arquivos no caminho
para pasta raiz, pastas, arquivos no os.walk (caminho):

# comparando os dias
se segundos >= get_file_or_folder_age (root_folder):

# removendo a pasta
remove_folder (pasta_ raiz)
delete_folders_count + = 1 # incremento da contagem

# break após remover a pasta root_folder
quebrar

outro:

# verificando a pasta da pasta root_folder
para pasta em pastas:

# caminho da pasta
folder_path = os.path.join (pasta raiz, pasta)

# comparando com os dias
se segundos >= get_file_or_folder_age (folder_path):

# invocando a função remove_folder
remove_folder (folder_path)
delete_folders_count + = 1 # incremento da contagem

# verificando os arquivos de diretório atuais
para arquivo em arquivos:

# caminho de arquivo
file_path = os.path.join (pasta raiz, arquivo)

# comparando os dias
se segundos >= get_file_or_folder_age (file_path):

# invocando a função remove_file
remove_file (arquivo_caminho)
delete_files_count + = 1 # incremento da contagem

outro:

# se o caminho não for um diretório
# comparando com os dias
se segundos >= get_file_or_folder_age (path):

# chamando o arquivo
remove_file (caminho)
delete_files_count + = 1 # incremento da contagem

outro:

# arquivo / pasta não encontrado
print (f ‘"{caminho}" Não foi encontrado’)
delete_files_count + = 1 # incremento da contagem

impressão (f"Total de pastas excluídas: {delete_folders_count}")
impressão (f"Total de arquivos excluídos: {delete_files_count}")

def remove_folder (caminho):

# removendo a pasta
se não for shutil.rmtree (caminho):

# mensagem de sucesso
impressão (f"{path} foi removido com sucesso")

outro:

# mensagem de falha
impressão (f"Não foi possível excluir o {path}")

def remove_file (caminho):

# removendo o arquivo
se não for os.remove (path):

# mensagem de sucesso
impressão (f"{path} foi removido com sucesso")

outro:

# mensagem de falha
impressão (f"Não foi possível excluir o {path}")

def get_file_or_folder_age (path):

# obtendo ctime do arquivo / pasta
# o tempo será em segundos
ctime = os.stat (caminho) .st_ctime

# retornando a hora
retorno ctime

se __name__ == ‘__main__’:
a Principal()

Você precisa ajustar as duas variáveis ​​a seguir no código acima com base no requisito.

dias = 30
path = "/ PATH_TO_DELETE"

Removendo arquivos maiores que X GB

Vamos procurar os arquivos maiores que um tamanho específico e excluí-los. É semelhante ao script acima. No script anterior, pegamos era como parâmetro, e agora levaremos Tamanho como um parâmetro para a exclusão.

# importando o módulo os
importação os

# função que retorna o tamanho de um arquivo
def get_file_size (caminho):

# obtendo o tamanho do arquivo em bytes
size = os.path.getsize (caminho)

# retornando o tamanho do arquivo
tamanho de retorno

# para excluir um arquivo
def remove_file (caminho):

# excluindo o arquivo
se não for os.remove (path):

# sucesso
impressão (f"{path} foi excluído com sucesso")

outro:

# error
impressão (f"Não foi possível excluir o {path}")

def main ():
# especifique o caminho
path = "ENTER_PATH_HERE"

# coloca o tamanho máximo do arquivo em MBs
tamanho = 500

# verificando se o caminho existe ou não
se os.path.exists (caminho):

# conversão de tamanho em bytes
tamanho = tamanho * 1024 * 1024

# atravessando as subpastas
para pasta raiz, pastas, arquivos no os.walk (caminho):

# iterando na lista de arquivos
para arquivo em arquivos:

# obtendo o caminho do arquivo
file_path = os.path.join (pasta raiz, arquivo)

# verificando o tamanho do arquivo
se get_file_size (arquivo_caminho) >= tamanho:
# invocando a função remove_file
remove_file (arquivo_caminho)

outro:

# verificando apenas se o caminho é arquivo
se os.path.isfile (caminho):
# path não é um diretório
# verificando o arquivo diretamente
se get_file_size (caminho) >= tamanho:
# invocando a função remove_file
remove_file (caminho)

outro:

# path não existe
impressão (f"{path} não existe")

se __name__ == ‘__main__’:
a Principal()

Ajuste as duas variáveis ​​a seguir.

path = "ENTER_PATH_HERE"
tamanho = 500

Removendo arquivos com uma extensão específica

Pode haver um cenário em que você deseja excluir arquivos por seus tipos de extensão. Digamos que arquivo .log. Podemos encontrar a extensão de um arquivo usando o método os.path.splitext (path). Retorna uma tupla contendo o caminho e a extensão do arquivo.

# importando módulo OS
importação os

# função principal
def main ():

# especifique o caminho
path = "PATH_TO_LOOK_FOR"

# especifique a extensão
extension = ".registro"

# verificando se o caminho existe ou não
se os.path.exists (caminho):

# verifique se o caminho é diretório ou não
se os.path.isdir (caminho):

# iterando pelas subpastas
para pasta raiz, pastas, arquivos no os.walk (caminho):

# verificação dos arquivos
para arquivo em arquivos:

# caminho de arquivo
file_path = os.path.join (pasta raiz, arquivo)

# extrair a extensão do nome do arquivo
file_extension = os.path.splitext (file_path) [1]

# verificando o file_extension
if extension == file_extension:

# excluindo o arquivo
caso contrário os.remove (file_path):

# mensagem de sucesso
impressão (f"{file_path} excluído com sucesso")

outro:

# mensagem de falha
impressão (f"Não foi possível excluir o {file_path}")

outro:

# path não é um diretório
impressão (f"{path} não é um diretório")

outro:

# path não existe
impressão (f"{path} não existe")

se __name__ == ‘__main__’:
# invocando a função principal
a Principal()

Não se esqueça de atualizar a variável de caminho e extensão no código acima para atender aos seus requisitos.

Eu sugeriria testar os scripts no ambiente NÃO PRODUÇÃO. Quando estiver satisfeito com os resultados, é possível agendar através do cron (se estiver usando o Linux) para executá-lo periodicamente para trabalhos de manutenção. O Python é ótimo para conseguir essas coisas e, se estiver interessado em aprender a fazer mais, confira este Curso Udemy.

TAG:

  • Pitão

Jeffrey Wilson Administrator
Sorry! The Author has not filled his profile.
follow me
    Like this post? Please share to your friends:
    Adblock
    detector
    map