Como Copiar um Arquivo em Python

Adriano Soares
5 minutos de leitura

Conteúdos do tutorial

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 ao shutil.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.

Inscreva-se gratuitamente e fique atualizado

Receba toda semana um resumo dos principais conteúdos da Asimov direto no seu e-mail. 100% livre de spam.

Áreas de interesse:
Conteúdos do tutorial