Copiar arquivos é uma tarefa comum que você pode precisar realizar enquanto trabalha com Python. Seja organizando arquivos, criando backups ou simplesmente transferindo dados, o módulo shutil
do Python oferece uma interface simples para operações com arquivos. Neste artigo, vamos explorar como usar o shutil
para copiar arquivos de forma eficaz.
Usando shutil.copyfile
O método shutil.copyfile
é muito simples de usar. Ele requer o caminho completo (incluindo o nome do arquivo) tanto para o arquivo de origem quanto para o de destino. Veja como você pode usá-lo:
import shutil
# Copia o conteúdo de src para dst
shutil.copyfile('caminho/para/arquivo/fonte.txt', 'caminho/para/arquivo/destino.txt')
Lembre-se de que o caminho de destino deve ser gravável, e se o arquivo de destino já existir, ele será sobrescrito. Este método não funciona com arquivos especiais como dispositivos de caracteres ou blocos e pipes.
Escolhendo Entre shutil.copy e shutil.copy2
Embora shutil.copyfile
seja útil, você pode achar shutil.copy
ou shutil.copy2
mais versáteis para suas necessidades. A função shutil.copy
permite especificar um diretório de destino, em vez de um arquivo, e também copiará as permissões do arquivo. Aqui está um exemplo:
import shutil
# Copia src para o diretório dst; o arquivo terá o mesmo nome
shutil.copy('caminho/para/arquivo/fonte.txt', 'caminho/para/diretório/destino')
Se você precisar preservar mais metadados, como os carimbos de data/hora do arquivo original, você deve usar shutil.copy2
. Ele funciona de maneira semelhante ao shutil.copy
, mas inclui os metadados adicionais:
import shutil
# Copia src para dst, preservando metadados
shutil.copy2('caminho/para/arquivo/fonte.txt', 'caminho/para/diretório/destino')
Entendendo as Diferenças
Aqui está uma comparação rápida para ajudá-lo a escolher o método certo para sua tarefa:
shutil.copy
: Copia o arquivo para um novo local e também copia as permissões do arquivo. Não copia metadados e não exige que o destino seja um nome de arquivo completo.shutil.copyfile
: Exige que tanto a origem quanto o destino sejam os nomes completos dos arquivos. Não copia permissões ou metadados.shutil.copy2
: Semelhante aoshutil.copy
, mas também preserva metadados do arquivo, como carimbos de data/hora.
Exemplo Prático
Digamos que você queira copiar um arquivo de um diretório para outro e preservar seus metadados. Veja como você pode fazer isso com shutil.copy2
:
import shutil
# Copiando o arquivo e preservando metadados
shutil.copy2('/caminho/para/arquivo/fonte.txt', '/caminho/para/destino/novoarquivo.txt')
Se o destino for um diretório, shutil.copy2
usará o nome base do arquivo de origem para criar o novo arquivo no diretório de destino:
import shutil
# O nome do arquivo de destino será /caminho/para/destino/arquivo.txt
shutil.copy2('/caminho/para/arquivo/fonte.txt', '/caminho/para/destino')
Resumo
Neste artigo, cobrimos como copiar arquivos em Python usando o módulo shutil
. Examinamos shutil.copyfile
, shutil.copy
e shutil.copy2
, cada um atendendo a diferentes necessidades. Se você precisa copiar permissões de arquivo, preservar metadados ou simplesmente mover um arquivo de um lugar para outro, shutil
fornece as ferramentas de que você precisa. Lembre-se de escolher o método que melhor se adapta às suas exigências para a tarefa em questão.
Cursos de programação gratuitos com certificado
Aprenda a programar e desenvolva soluções para o seu trabalho com Python para alcançar novas oportunidades profissionais. Aqui na Asimov você encontra:
- Conteúdos gratuitos
- Projetos práticos
- Certificados
- +20 mil alunos e comunidade exclusiva
- Materiais didáticos e download de código
Comentários