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