Como copiar um arquivo em Python
-
Shutil
copyfile()
Método para copiar arquivo em Python -
Shutil
copy()
Método para copiar arquivo com permissões -
Comparação entre os métodos
copy()
ecopyfile()
-
copyfileobj()
Método para copiar objeto de arquivo -
copy2()
Método para Preservar Metadados - Conclusão dos métodos de cópia de um arquivo em Python
Python vem com vários módulos fora da caixa para suportar operações de E/S de arquivos (como SO, subprocesso e shutil). Você simplesmente copiará arquivos e diretórios utilizando o módulo shutil
. Operações como duplicação, transferência ou exclusão de arquivos e diretórios são concluídas utilizando esta função utilitária. Aqui são discutidos quatro métodos como se segue.
Shutil copyfile()
Método para copiar arquivo em Python
Ele copia o material de origem para um arquivo com o nome de destino. Se o destino não puder ser escrito, uma exceção IOError
ocorrerá no processo de cópia. Se a origem e os arquivos de destino forem os mesmos, o SameFileError
retorna. Os nomes da origem e do destino são fornecidos como strings.
copyfile(source_file, destination_file)
Os dispositivos de caracteres ou blocos e os tubos não são suportados por este método.
import shutil
source = r"C:\Users\DelftStack\Documents\test\test.txt"
destination = r"C:\Users\DelftStack\Pictures\test2\test2.txt"
shutil.copyfile(source, destination)
Shutil copy()
Método para copiar arquivo com permissões
O método copy()
funciona como o comando Unix cp
. Ao copiar seu conteúdo, este método sincroniza as permissões do arquivo de destino com o arquivo fonte. Se você estiver copiando o mesmo arquivo, ele também lança o comando SameFileError
. Sua sintaxe é a seguinte.
shutil.copy(src_file, dest_file, *, follow_symlinks=True)
Exemplo de Shutil copy()
Método para copiar arquivo com permissões
import shutil
src = r"C:\Users\DelftStack\Documents\test\test.txt"
des = r"C:\Users\DelftStack\Pictures\test2\test2.txt"
shutil.copy(src, des)
Comparação entre os métodos copy()
e copyfile()
- O método
copy()
freqüentemente define a permissão do arquivo à medida que o conteúdo é copiado, enquanto que ocopyfile()
copia apenas os dados. - Essencialmente, em sua implementação, o método
copyfile()
utiliza o métodocopyfileobj()
. Em comparação, o métodocopyfile()
utiliza as funçõescopyfile()
ecopymode()
. - O ponto acima deixa claro que
copyfile()
será um pouco mais rápido do quecopy()
porque há um trabalho extra em mãos com este último (preservação das permissões).
copyfileobj()
Método para copiar objeto de arquivo
Esta função copia o arquivo para o objeto do caminho ou arquivo de destino. Se o objeto de destino for um objeto de arquivo, você precisa fechá-lo após chamar copyfileobj()
diretamente. O tamanho do buffer é utilizado para especificar o comprimento do buffer. É o número de bytes retidos na memória durante o processo de cópia.
A sintaxe do método copyfileobj()
está abaixo.
shutil.copyfileobj(src_file_object, dest_file_object[, length])
import shutil
filename1 = r"C:\Users\DelftStack\Documents\test\test.txt"
fileA = open(filename1, "rb")
filename2 = r"C:\Users\DelftStack\Pictures\test2\test2.txt"
fileB = open(filename2, "wb")
shutil.copyfileobj(fileA, fileB)
copy2()
Método para Preservar Metadados
O método copy2()
é similar ao método copy()
, mas além de copiar o conteúdo do arquivo, ele também preserva todos os metadados do arquivo fonte.
shutil.copy2(src_file, dest_file, *, follow_symlinks=True)
import shutil
src = r"C:\Users\DelftStack\Documents\test\test.txt"
des = r"C:\Users\DelftStack\Pictures\test2\test2.txt"
shutil.copy2(src, des)
Conclusão dos métodos de cópia de um arquivo em Python
No final, uma tabela é anexada para todos os métodos e ajuda a entender melhor a utilidade shutil
.
Função | copia metadados | permissões de cópia | pode usar tampão | destino pode ser diretório |
---|---|---|---|---|
shutil.copy |
Não | Sim | Não | Sim |
shutil.copyfile |
Não | Não | Não | Não |
shutil.copy2 |
Sim | Sim | Não | Sim |
shutil.copyfileobj |
Não | Não | Sim | Não |
Artigo relacionado - Python File
- Como obter todos os arquivos de um diretório
- Como Anexar Texto a um Arquivo em Python
- Como verificar se um arquivo existe em Python
- Como encontrar ficheiros com uma certa extensão apenas em Python
- Como ler linhas específicas a partir de um arquivo em Python
- Gravar linha por linha em um arquivo usando Python