6.1 Trabalhando com arquivos
O Python oferece várias funções e módulos embutidos para trabalhar com
arquivos e diretórios. As operações principais são feitas usando os módulos
embutidos os
, shutil
, entre outros.
Três operações principais com arquivos:
- Cópia
- Movimentação
- Exclusão
Para realizar essas operações, o módulo shutil
é ideal.
Copiando um arquivo
import shutil
shutil.copy('source.txt', 'destination.txt')
Movendo um arquivo
import shutil
shutil.move('source.txt', 'destination.txt')
Excluindo um arquivo
import os
os.remove('example.txt')
Mais fácil do que nunca.
6.2 Verificando a existência de um arquivo
Muitas vezes, precisamos verificar se um determinado arquivo existe ou não.
Para isso, o módulo os
tem um método específico —
exists()
.
Verificação da existência de um arquivo
import os
if os.path.exists('example.txt'):
print("File exists")
else:
print("File does not exist")
# Se o arquivo não existir, o programa executa as ações descritas no bloco else.
# Por exemplo, você pode emitir um aviso, criar um novo arquivo ou sair do programa.
Se o arquivo não existir, o programa pode lidar com isso usando condições ou lançando uma exceção.
6.3 Verificando o tipo de objeto: arquivo ou diretório
Muitas vezes, precisamos verificar se um objeto é um arquivo ou um diretório. Por exemplo, se você estiver lendo todo o conteúdo de um diretório e quiser tratar arquivos de uma maneira e diretórios de outra.
Para esses casos, há dois métodos especiais — isdir()
, que verifica se o objeto é um diretório, e isfile()
, que verifica se o objeto é um arquivo.
Verificação — é diretório ou não
if os.path.isdir('example_directory'):
print("É um diretório")
else:
print("Não é um diretório")
Verificação — é arquivo ou não
if os.path.isfile('example_file'):
print("É um arquivo")
else:
print("Não é um arquivo")
Essas são funções muito úteis que você usará mais frequentemente do que imagina. :)
6.4 Trabalhando com caminhos
O módulo os
tem um submódulo os.path
,
que contém funções úteis para trabalhar com arquivos e diretórios. Aqui estão
algumas delas:
Obtendo a extensão do arquivo
A função splitext()
divide o nome do arquivo em duas partes e
retorna uma lista com dois elementos: o nome e a extensão.
import os.path
# Obtendo a extensão do arquivo
file_path = 'example.txt'
file_extension = os.path.splitext(file_path)[1]
print(f"Extensão do arquivo: {file_extension}")
Obtendo o nome do arquivo sem a extensão
import os.path
# Obtendo o nome do arquivo sem a extensão
file_path = 'example.txt'
file_name = os.path.splitext(os.path.basename(file_path))[0]
print(f"Nome do arquivo sem extensão: {file_name}")
Obtendo o nome do arquivo do caminho
A função basename()
retorna apenas o nome do arquivo, cortando
todo o caminho até ele.
import os.path
# Obtendo o nome do arquivo do caminho
file_path = '/path/to/example.txt'
file_name = os.path.basename(file_path)
print(f"Nome do arquivo: {file_name}")
Obtendo o diretório do caminho
Também é fácil obter apenas o diretório de um nome de arquivo usando
a função dirname()
.
import os.path
# Obtendo o diretório do caminho
file_path = '/path/to/example.txt'
directory = os.path.dirname(file_path)
print(f"Diretório: {directory}")
Juntando caminhos
Se você tem um diretório separado e um nome de arquivo separado, você pode obter o caminho completo para esse arquivo.
import os.path
# Juntando caminhos
directory = '/path/to'
file_name = 'example.txt'
full_path = os.path.join(directory, file_name)
print(f"Caminho completo: {full_path}")
6.5 Caminhos independentes de plataforma
Ao trabalhar com caminhos, é importante considerar as diferenças entre sistemas operacionais. Os separadores de caminho podem variar, e o código que funciona em uma plataforma pode não funcionar em outra. Para evitar problemas ao transferir código entre diferentes sistemas operacionais, use as funções os.path.join()
, os.path.abspath()
, e os.path.dirname()
, que garantem compatibilidade entre plataformas.
Por exemplo:
import os
# Juntando caminhos de forma independente de plataforma
directory = 'some_directory'
file_name = 'example.txt'
full_path = os.path.join(directory, file_name)
print(f"Caminho completo: {full_path}")
Obtendo o caminho absoluto
Se você tem apenas um caminho relativo ao diretório de trabalho atual, mas quer
convertê-lo em absoluto, use
a função abspath()
.
import os.path
# Obtendo o caminho absoluto
relative_path = 'example.txt'
absolute_path = os.path.abspath(relative_path)
print(f"Caminho absoluto: {absolute_path}")
Importante!
Sempre use funções do sistema
ao trabalhar com caminhos, pois seu código pode ser executado em outro sistema
operacional, onde o separador de arquivos não é \
, mas /
, ou onde são proibidos ":"
em caminhos ou
algo mais.
GO TO FULL VERSION