0Pricing
Python Academy · Aula

shutil para operações com arquivos

Copie, mova e arquive arquivos

shutil para operações com arquivos é uma aula grátis de Python Academy no CoddyKit. Esta é a aula 4 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de Python Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de Python Academy inclui 4 aulas no total.

O que é shutil?

O módulo shutil (utilitários do shell) oferece operações de alto nível com arquivos: copiar, mover, excluir árvores de diretórios e criar arquivos compactados. Ele se baseia em os para tarefas do dia a dia.

import shutil, os

os.makedirs('/tmp/shutil_demo', exist_ok=True)
with open('/tmp/shutil_demo/a.txt', 'w') as f:
    f.write('hello')
print('created a.txt')

Copiando um arquivo

shutil.copy(src, dst) copia o conteúdo de um arquivo e seus bits de permissão para um novo local.

import shutil, os

os.makedirs('/tmp/shutil_demo', exist_ok=True)
with open('/tmp/shutil_demo/src.txt', 'w') as f:
    f.write('data')
shutil.copy('/tmp/shutil_demo/src.txt', '/tmp/shutil_demo/copy.txt')
print(os.path.exists('/tmp/shutil_demo/copy.txt'))

copy versus copy2

shutil.copy2 funciona como copy, mas também preserva metadados, como marcas de tempo. Use-o quando os horários de modificação forem importantes.

import shutil, os

os.makedirs('/tmp/shutil_demo', exist_ok=True)
with open('/tmp/shutil_demo/m.txt', 'w') as f:
    f.write('x')
shutil.copy2('/tmp/shutil_demo/m.txt', '/tmp/shutil_demo/m2.txt')
print('copied with metadata')

Copiando uma árvore inteira

shutil.copytree(src, dst) copia recursivamente um diretório inteiro. O destino não pode existir anteriormente (a menos que você passe dirs_exist_ok=True).

import shutil, os

os.makedirs('/tmp/tree_src/sub', exist_ok=True)
with open('/tmp/tree_src/sub/f.txt', 'w') as f:
    f.write('hi')
shutil.rmtree('/tmp/tree_dst', ignore_errors=True)
shutil.copytree('/tmp/tree_src', '/tmp/tree_dst')
print(os.path.exists('/tmp/tree_dst/sub/f.txt'))

Movendo arquivos e pastas

shutil.move(src, dst) move ou renomeia um arquivo ou diretório. Ele funciona entre sistemas de arquivos nos casos em que os.rename falharia.

import shutil, os

os.makedirs('/tmp/move_demo', exist_ok=True)
with open('/tmp/move_demo/old.txt', 'w') as f:
    f.write('move me')
shutil.move('/tmp/move_demo/old.txt', '/tmp/move_demo/new.txt')
print(os.path.exists('/tmp/move_demo/new.txt'))

Excluindo uma árvore de diretórios

shutil.rmtree(path) remove um diretório e tudo o que estiver dentro dele. Use-o com cuidado: não há como desfazer a ação.

import shutil, os

os.makedirs('/tmp/to_delete/inner', exist_ok=True)
shutil.rmtree('/tmp/to_delete')
print('exists after rmtree:', os.path.exists('/tmp/to_delete'))

ignore_errors e segurança

Passar ignore_errors=True para rmtree evita uma falha se o caminho não existir, o que é útil para fazer a limpeza antes de uma nova execução.

import shutil

shutil.rmtree('/tmp/never_existed', ignore_errors=True)
print('no error even though path was absent')

Criando um arquivo compactado

shutil.make_archive(base_name, format, root_dir) reúne um diretório em um arquivo zip ou tar com uma única chamada.

import shutil, os

os.makedirs('/tmp/arch_src', exist_ok=True)
with open('/tmp/arch_src/data.txt', 'w') as f:
    f.write('archive me')
path = shutil.make_archive('/tmp/my_archive', 'zip', '/tmp/arch_src')
print('created', os.path.basename(path))

Extraindo um arquivo compactado

shutil.unpack_archive(filename, extract_dir) reverte o processo, expandindo um arquivo zip ou tar em uma pasta.

import shutil, os

shutil.make_archive('/tmp/box', 'zip', '/tmp/arch_src')
shutil.unpack_archive('/tmp/box.zip', '/tmp/unpacked')
print(os.listdir('/tmp/unpacked'))

Encontrando executáveis

shutil.which(name) localiza um programa no PATH do sistema, como o comando which do shell. Ele retorna o caminho completo ou None.

import shutil

print(shutil.which('python3'))
print(shutil.which('definitely_not_a_real_program'))

Uso do disco

shutil.disk_usage(path) informa o número total de bytes, os bytes usados e os bytes livres do sistema de arquivos que contém o caminho.

import shutil

usage = shutil.disk_usage('/')
print('total GB:', round(usage.total / 1e9, 1))
print('free GB:', round(usage.free / 1e9, 1))

Verificação rápida

Teste sua compreensão de shutil.

Recapitulação

Você aprendeu a usar shutil para operações com arquivos:

  • copy/copy2 copiam arquivos; copytree copia árvores inteiras.
  • move renomeia ou realoca; rmtree exclui árvores.
  • make_archive/unpack_archive lidam com arquivos zip e tar.
  • which e disk_usage consultam o sistema.

Próximo curso: criando ferramentas de linha de comando com argparse.

Perguntas Frequentes

A aula “shutil para operações com arquivos” é grátis?

Sim — o texto completo de “shutil para operações com arquivos” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de Python Academy, atualize para CoddyKit PRO. O curso de Python Academy inclui 4 aulas no total.

O que vou aprender em “shutil para operações com arquivos”?

Copie, mova e arquive arquivos Você pratica Python Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.

Preciso ter experiência prévia para começar Python Academy?

Nenhuma experiência prévia é necessária. Python Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 4 de 4.

Quanto tempo leva a aula “shutil para operações com arquivos”?

A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.

Posso escrever e executar código nesta aula de Python Academy?

Sim. Cada aula de Python Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.

Todas as aulas deste curso

  1. Execução de comandos com subprocess
  2. Captura da saída
  3. Ambiente e módulo os
  4. shutil para operações com arquivos
← Voltar para Python Academy