Como mover arquivos e trabalhar com diretórios em Python

Treinador Online de Python para Iniciantes

Aprenda Python facilmente sem sobrecarga teórica. Resolva tarefas práticas com verificação automática e escreva código diretamente no navegador.

Start Course

Fundamentos do sistema de arquivos em Python

Trabalhar com o sistema de arquivos é uma das tarefas mais comuns no desenvolvimento com Python. Esse processo inclui criar e excluir arquivos, copiá-los, movê-los, renomeá-los, além de criar diretórios e verificar se eles existem. As operações com arquivos são a base para automação de processos, desenvolvimento web, análise de dados, gerenciamento de configurações e implantação de aplicações.

O Python oferece um conjunto robusto de bibliotecas nativas para trabalhar com o sistema de arquivos de forma eficiente. As principais ferramentas são os módulos os, shutil e pathlib. Essas bibliotecas cobrem praticamente todos os cenários possíveis, desde operações básicas até tarefas avançadas.

Movendo arquivos em Python

Usando a função shutil.move()

Quando você precisa mover um arquivo de um diretório para outro, a maneira mais simples e eficaz é usar a função shutil.move(). Ela funciona de forma similar ao comando mv em sistemas Linux e Unix.

import shutil

shutil.move('source/arquivo.txt', 'destination/arquivo.txt')

A função shutil.move() lida automaticamente tanto com arquivos individuais quanto com diretórios inteiros. Durante a movimentação, o arquivo também pode ser renomeado. É importante saber que, se um arquivo com o mesmo nome já existir na pasta de destino, ele será sobrescrito sem aviso.

Criando diretórios ao mover arquivos

Ao mover arquivos, muitas vezes é necessário criar novos diretórios. A abordagem a seguir resolve esse problema:

import os
import shutil

origem = 'dados/relatorio.txt'
destino_dir = 'arquivo'
os.makedirs(destino_dir, exist_ok=True)
shutil.move(origem, os.path.join(destino_dir, 'relatorio.txt'))

A função os.makedirs() com o parâmetro exist_ok=True cria uma cadeia de diretórios se eles não existirem e não gera erro se os diretórios já existirem.

Movendo diretórios

A função shutil.move() também suporta a movimentação de diretórios inteiros:

shutil.move('pasta_antiga', 'novo_local/pasta_antiga')

Copiando arquivos e criando links

Cópia básica de arquivos

Para copiar arquivos, o Python oferece várias funções com diferentes funcionalidades:

import shutil

# Copiar o conteúdo do arquivo
shutil.copy('arquivo.txt', 'backup/arquivo.txt')

A função copy() copia apenas o conteúdo do arquivo, mas não preserva os metadados. Para uma cópia completa, mantendo todos os atributos do arquivo, use copy2():

shutil.copy2('arquivo.txt', 'backup/arquivo.txt')

Copiando diretórios

Para copiar diretórios inteiros com todo o seu conteúdo, use a função copytree():

shutil.copytree('projeto', 'backup_projeto')

Criando hard links

Um hard link é um nome adicional para um arquivo existente no sistema de arquivos:

import os

os.link('arquivo.txt', 'arquivo_linkado.txt')

Um hard link significa que um único arquivo físico está acessível por vários caminhos diferentes. As alterações no conteúdo do arquivo são refletidas em todos os links. O número de hard links pode ser verificado com os.stat().st_nlink.

Gerenciando diretórios

Criando diretórios

O Python oferece duas funções principais para criar diretórios:

import os

# Criar um único diretório
os.mkdir('nova_pasta')

# Criar uma estrutura aninhada de diretórios
os.makedirs('pai/filho/neto', exist_ok=True)

A função mkdir() cria apenas um diretório e gera uma exceção FileExistsError se o diretório já existir.

Blogs

Book Recommendations