Pitão

módulo shutil em Python

módulo shutil em Python
Gerenciamento de arquivos e manipulação de objetos de arquivo são considerados uma das tarefas mais complicadas em todas as linguagens de programação. Algumas linguagens de programação nos fornecem algumas ferramentas que abstraem as partes difíceis do Manuseio de Arquivos com funções e interfaces fáceis de usar. Isso é exatamente o que o Python fechadura módulo também.

Python shutil

O módulo shutil do Python permite que um desenvolvedor use objetos de arquivo com muita facilidade e sem entrar em detalhes mais profundos sobre como as coisas funcionam nos bastidores. Este módulo basicamente abstrai a semântica de baixo nível de criação e gerenciamento de objetos de arquivo, limpando-os assim que o uso for concluído e nos permite focar na lógica de negócios do aplicativo. Veremos muitos exemplos aqui, vamos começar.

Exemplos com módulo shutil Python

Vamos estudar vários exemplos que demonstram o uso de Python fechadura módulo aqui.

Copiando um arquivo

Com o copyfile () função em fechadura módulo, podemos fazer uma cópia exata de um arquivo existente em qualquer lugar da máquina. Vejamos um programa de amostra para demonstrar como isso pode ser feito:

importar os
import Shutil
file_directory = './Arquivos'
print ('Arquivos antes de:', os.listdir (file_directory))
fechadura.copyfile ('./ Files / hello.TXT', './ Files / hello_again.TXT')
print ('Arquivos depois de:', os.listdir (file_directory))

Acabamos de copiar um arquivo que existe no diretório fornecido para clonar o arquivo no mesmo diretório. Aqui está o que recebemos de volta com este comando:

Cópia do arquivo de shutil do Python

O bom desta função é que a função mencionada também leva como entrada o nome do novo arquivo a ser criado.

Copiando arquivos para outro diretório

É possível copiar um arquivo para um novo diretório com o do shutil cópia de() função. Vamos ver isso em ação:

importar os
import Shutil
print ('Fazendo um novo diretório.')
os.mkdir ('LinuxHint')
print ('Arquivos antes de:', os.listdir ('LinuxHint'))
fechadura.cópia de('./ Files / hello.txt ',' LinuxHint ')
print ('Arquivos depois de:', os.listdir ('LinuxHint'))

Vamos ver a saída deste comando:

Copiando arquivo para um novo diretório

Observe que quando um arquivo é copiado usando o cópia de() função, permissões para o arquivo também são clonadas mas os metadados do arquivo não são copiados. Isso significa que quando você verificar quando este arquivo foi feito, ele mostrará o momento em que você executou este script.

Copiando arquivo com metadados

Na última seção, vimos como poderíamos fazer uma cópia do arquivo. E se você quiser fazer um clone exato de um arquivo que envolve a clonagem de seus metadados, assim como quando o arquivo foi feito, etc. Isso também é possível, mas isso pode não funcionar em um sistema baseado em POSIX. Vejamos um exemplo de como isso pode ser feito:

importar os
import Shutil
tempo de importação
new_directory = 'LinuxHint'
src_file = './ Files / hello.TXT'
dest_file = './ LinuxHint / hello.TXT'
def file_metadata (arquivo):
stat_info = os.stat (arquivo)
print ('Modo:', oct (stat_info.st_mode))
print ('Criado:', hora.ctime (stat_info.st_ctime))
imprimir ('Acessado:', hora.ctime (stat_info.st_atime))
print ('Modificado:', hora.ctime (stat_info.st_mtime))
os.mkdir (novo_diretório)
imprimir ('Metadados para o arquivo de origem:')
file_metadata (src_file)
fechadura.copy2 (src_file, new_directory)
imprimir ('Metadados para o arquivo de destino:')
file_metadata (dest_file)

Aqui está o que recebemos de volta com este comando quando o executamos em um sistema baseado em POSIX (os metadados não são clonados completamente):

Copiar arquivo com metadados

Em sistemas não baseados em POSIX, até mesmo o tempo criado e acessado teria correspondido exatamente.

Clonando diretório completo

Na última seção, vimos como poderíamos fazer uma cópia do arquivo. Aqui, veremos como podemos clonar um diretório completo recursivamente. Isso significa que se outro diretório existir no diretório que queremos clonar, esses também serão clonados.

importar pprint
import Shutil
importar os
src_directory = './Arquivos'
dest_directory = './ LinuxHint '
fechadura.copytree (src_directory, dest_directory)
imprimir ('Conteúdo da fonte:')
pprint.pprint (os.listdir (src_directory))
imprimir ('Conteúdo do destino:')
pprint.pprint (os.listdir (dest_directory))

Vamos ver a saída deste comando:

Duplicando um diretório

Observe que o diretório que passamos para a função copytree () como o diretório de destino não deve existir antes de executarmos este programa.

Excluindo um Diretório

Excluir um diretório é muito simples com o rmtree () função no módulo. Vamos ver essa função em ação aqui:

importar pprint
import Shutil
importar os
delete_directory = 'LinuxHint'
current_directory = '.'
imprimir ('Conteúdo antes da remoção:')
pprint.pprint (os.listdir (current_directory))
fechadura.rmtree (delete_directory)
imprimir ('Conteúdo após remoção:')
pprint.pprint (os.listdir (current_directory))

Depois de executar o script, LinuxHint diretório é excluído junto com o conteúdo. Aqui está o que recebemos de volta com este comando:

Excluir diretório

Localizando arquivos

Se você deseja encontrar um arquivo que está presente na variável PATH em sua máquina, podemos usar o que() função para encontrar esse arquivo pelo nome. Vejamos um exemplo de demonstração para esta função:

import Shutil
imprimir (fechar.qual ('bsondump'))
imprimir (fechar.que ('nenhum arquivo encontrado'))

Aqui está o que recebemos de volta com este comando:

Encontrar arquivo em PATH

Monitorando o Espaço do Sistema de Arquivos

Com o módulo shutil, temos uma função disk_usage () por meio da qual também podemos obter informações de espaço em disco sobre nossa máquina. Vejamos um exemplo que mostra esses dados de maneira legível:

import Shutil
total_b, used_b, free_b = shutil.Uso de disco('.')
gb = 10 ** 9 # GB == gigabyte
imprimir ('Total: : 6.2f GB '.formato (total_b / gb))
print ('Usado: : 6.2f GB '.formato (usado_b / gb))
imprimir ('Grátis: : 6.2f GB '.formato (free_b / gb))

Aqui está o que recebemos de volta com este comando:

Encontrando espaço no sistema de arquivos

Diretórios de arquivamento

Como um exemplo final, veremos como podemos arquivar um módulo de shutil de diretório make_archive () função. Vejamos o programa de amostra:

import Shutil
importar os
archive_directory = \
os.caminho.expanduser (os.caminho.join ('destino-diretório-caminho', 'linuxhint'))
root_dir = os.caminho.expanduser (os.caminho.junte-se ('~', '.ssh '))
fechadura.make_archive (archive_directory, 'gztar', root_dir)

Aqui está o que recebemos de volta com este comando:

Diretório de arquivamento

Se você desarquivar o arquivo TAR e dar uma olhada, ele conterá todos os .ssh arquivos de diretório nele.

Conclusão

Nesta lição, vimos como podemos gerenciar objetos de arquivo com operações de arquivo de alto nível facilmente com fechadura módulo em Python. Operações como copiar o conteúdo de um arquivo, criar uma nova cópia de um arquivo, etc. parecia fácil com este módulo.

Jogos HD Remasterizados para Linux que nunca tiveram uma versão Linux anterior
Muitos desenvolvedores e editores de jogos estão apresentando remasterização em HD de jogos antigos para estender a vida da franquia, por favor, os fã...
Como usar o AutoKey para automatizar jogos Linux
AutoKey é um utilitário de automação de desktop para Linux e X11, programado em Python 3, GTK e Qt. Usando sua funcionalidade de script e MACRO, você ...
Como mostrar o contador de FPS em jogos Linux
Os jogos Linux tiveram um grande impulso quando a Valve anunciou o suporte Linux para o cliente Steam e seus jogos em 2012. Desde então, muitos jogos ...