0% acharam este documento útil (0 voto)
0 visualizações6 páginas

Pathlib e Shutil Em Python

O documento aborda o uso das bibliotecas pathlib e shutil em Python, destacando suas vantagens em relação ao uso de strings para manipulação de caminhos e arquivos. Ele apresenta métodos úteis, como .exists(), .glob() e operações de cópia e movimentação de arquivos com shutil. Além disso, enfatiza a importância de verificar a existência de arquivos e diretórios antes de realizar operações para evitar erros.

Enviado por

G Franz
Direitos autorais
© All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato PDF, TXT ou leia on-line no Scribd
0% acharam este documento útil (0 voto)
0 visualizações6 páginas

Pathlib e Shutil Em Python

O documento aborda o uso das bibliotecas pathlib e shutil em Python, destacando suas vantagens em relação ao uso de strings para manipulação de caminhos e arquivos. Ele apresenta métodos úteis, como .exists(), .glob() e operações de cópia e movimentação de arquivos com shutil. Além disso, enfatiza a importância de verificar a existência de arquivos e diretórios antes de realizar operações para evitar erros.

Enviado por

G Franz
Direitos autorais
© All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato PDF, TXT ou leia on-line no Scribd

PATHLIB E SHUTIL EM PYTHON Material do Prof.

Gustavo Franz (Science/Biology)

PATHLIB E SHUTIL EM PYTHON Path


Caminhos e arquivos no Python — baseado na documentacao oficial 3.14.6

Prof. Gustavo Franz (Science/Biology)


Python Developer in Progress
Building Educational Solutions with Python
GitHub: [Link]/GustaFranz

Por que Path em vez de string?


String x Path

Aspecto String Path

Juntar pastas 'pasta' + '/' + 'arquivo' pasta / 'arquivo'

Portabilidade Barras \ ou / manual Ajusta ao sistema

Metodos uteis [Link] separado .exists(), .glob(), etc.

Legibilidade Caminho longo confuso Objeto com propriedades

Importar Path e operador /


Path e a classe principal para caminhos concretos. Ela representa um caminho real no disco da plataforma em que
o codigo roda.

from pathlib import Path

pasta = Path('dados')
arquivo = pasta / 'simulado_7ano.csv'
print(arquivo) # dados/simulado_7ano.csv

__file__ e .parent
__file__ guarda o caminho do script em execucao. Com .parent voce sobe um nivel na arvore de pastas — essencial
para achar dados/ sem caminho fixo.

pasta_projeto = Path(__file__).resolve().parent
pasta_dados = pasta_projeto / 'dados'
print(pasta_projeto)
print(pasta_dados.exists())

Regra de ouro

Nunca use C:/Users/... fixo no codigo.


Use Path(__file__).parent para achar a pasta do exercicio.

Baseado na documentacao
Python Developer oficial
in Progress —Python 3.14.6
[Link]/GustaFranz Pagina 1
PATHLIB E SHUTIL EM PYTHON Material do Prof. Gustavo Franz (Science/Biology)

Arvore de pastas do projeto boletim


No projeto automacao-dashboard-boletim-escolar, os modulos ficam em src/ e acessam dados/ e saidas/ na raiz
com .[Link].

Estrutura de pastas
automacao-dashboard-boletim-escolar/
■■■ src/
■■■ leitor_simulados.py
■■■ automacao_portal.py
■■■ [Link]
■■■ dados/
■■■ simulados/
■■■ provas/
■■■ saidas/
■■■ boletins/

# Script em src/[Link]
raiz = Path(__file__).resolve().[Link]
pasta_simulados = raiz / 'dados' / 'simulados'
pasta_saidas = raiz / 'saidas' / 'boletins'

Fluxo:

src/[Link] → .parent → .parent → raiz do projeto

Propriedades do caminho
caminho = Path('dados/simulado_7ano.csv')

[Link] # simulado_7ano.csv
[Link] # simulado_7ano
[Link] # .csv
[Link] # dados
[Link] # ('dados', 'simulado_7ano.csv')

Referencia rapida

Propriedade Retorna Exemplo

.name Nome com extensao [Link]

.stem Nome sem extensao notas

.suffix Extensao .csv

.parent Pasta pai dados/

.parts Tupla de partes ('/', 'etc', 'hosts')

exists(), is_file(), is_dir()

Baseado na documentacao
Python Developer oficial
in Progress —Python 3.14.6
[Link]/GustaFranz Pagina 2
PATHLIB E SHUTIL EM PYTHON Material do Prof. Gustavo Franz (Science/Biology)

Fluxo:

Caminho → exists()? → is_file()? → Agir com seguranca

arquivo = pasta_dados / 'simulado_7ano.csv'

if [Link]():
print('Arquivo encontrado')
if arquivo.is_file():
print('E um arquivo')
if pasta_dados.is_dir():
print('E uma pasta')

Padrao do projeto real

Sempre verificar .exists() antes de ler ou mover.


Evita FileNotFoundError e mensagens confusas.
Usado em automacao_portal.py antes do [Link].

glob() e rglob() — buscar arquivos


glob busca na pasta atual; rglob busca recursivamente em subpastas. Retornam um iterador de objetos Path.

Padroes comuns

Padrao O que encontra

'*.csv' CSV na pasta atual

'**/*.csv' CSV em qualquer subpasta

'simulado_*.csv' CSV com prefixo simulado_

'*.xlsx' Planilhas Excel

pasta = Path('dados')
for csv in [Link]('*.csv'):
print(csv)

for csv in [Link]('**/*.csv'):


print([Link]())

mkdir(), touch(), unlink()


pasta_saida = raiz / 'saidas' / 'boletins'
pasta_saida.mkdir(parents=True, exist_ok=True)

arquivo = pasta_saida / 'aluno_01.html'


[Link]() # cria vazio se nao existir
[Link]() # apaga o arquivo

Baseado na documentacao
Python Developer oficial
in Progress —Python 3.14.6
[Link]/GustaFranz Pagina 3
PATHLIB E SHUTIL EM PYTHON Material do Prof. Gustavo Franz (Science/Biology)

Metodo Funcao Parametro importante

mkdir() Cria pasta parents=True, exist_ok=True

touch() Cria arquivo vazio —

unlink() Remove arquivo Verificar exists() antes

rename() Renomeia/move Destino nao pode existir*

parents=True cria pastas intermediarias. exist_ok=True evita erro se a pasta ja existir.

read_text() e write_text()
Metodos convenientes para ler e gravar texto. Sempre use encoding='utf-8' para acentos e caracteres especiais.

conteudo = arquivo.read_text(encoding='utf-8')

html = '<html><body><h1>Boletim</h1></body></html>'
destino = pasta_saida / 'boletim_aluno.html'
destino.write_text(html, encoding='utf-8')

Exemplo do projeto boletim

[Link] grava CSV em saidas/


[Link] gera HTML por aluno com write_text.
Sempre criar pasta de saida com mkdir antes.

resolve(), absolute(), relative_to()


p = Path('dados/../dados/[Link]')
[Link]() # caminho absoluto, sem ..
[Link]() # absoluto a partir do cwd

base = Path('/projeto')
arquivo = base / 'dados/[Link]'
arquivo.relative_to(base) # dados/[Link]

Fluxo:

Path(__file__) → .resolve() → .parent → .parent → raiz

resolve() elimina .. e links simbolicos quando possivel. Use para exibir caminhos completos ou comparar
localizacoes.

Shutil — operacoes de alto nivel


O modulo shutil complementa o pathlib: pathlib localiza caminhos; shutil copia, move e remove arquivos e pastas
inteiras.

Baseado na documentacao
Python Developer oficial
in Progress —Python 3.14.6
[Link]/GustaFranz Pagina 4
PATHLIB E SHUTIL EM PYTHON Material do Prof. Gustavo Franz (Science/Biology)

Qual funcao de copia usar?

Funcao Copia conteudo Copia metadados

copyfile() Sim Nao

copy() Sim Permissoes

copy2() Sim Permissoes + datas

copystat() Nao So metadados

import shutil

[Link]('[Link]', '[Link]')
shutil.copy2('[Link]', '[Link]')

move(), copytree(), rmtree()


Fluxo:

Downloads/ → exists()? → unlink destino → [Link] → dados/simulados/

def mover_csv_baixado(nome: str) -> None:


origem = pasta_downloads / nome
destino = pasta_simulados / nome
if not [Link]():
print('Origem nao encontrada')
return
if [Link]():
[Link]()
[Link](origem, destino)
print(f'Arquivo movido para: {destino}')

Funcoes extras uteis:

[Link]('src_pasta', 'dst_pasta')
[Link]('pasta_temp')
shutil.disk_usage('/') # total, usado, livre
[Link]('python') # caminho do executavel

Exercicio integrado
Combine pathlib + shutil: (1) glob para achar CSV em downloads/, (2) mkdir em dados/simulados/, (3) move com
shutil, (4) confirme com exists().

Baseado na documentacao
Python Developer oficial
in Progress —Python 3.14.6
[Link]/GustaFranz Pagina 5
PATHLIB E SHUTIL EM PYTHON Material do Prof. Gustavo Franz (Science/Biology)

Prof. Gustavo Franz (Science/Biology)


Python Developer in Progress
Building Educational Solutions with Python
Professor de Ciencias e Biologia desde 2013 — atualmente estudando Programacao.

Eu crio estes resumos para organizar os assuntos e estudar de forma clara e objetiva. Estou compartilhando porque
eles tambem podem ajudar outros desenvolvedores que estao comecando. Bons estudos — vamos aprender juntos!

GitHub: [Link]/GustaFranz

Exercicios Python: [Link]/GustaFranz/python_exercises


Para quem quiser ver a resolucao dos meus exercicios em Python.

EasyAnsi: [Link]/GustaFranz/easyansi
Para quem quiser codificar personalizando com cores e estilos de forma mais facil, pratica e intuitiva.

Baseado na documentacao
Python Developer oficial
in Progress —Python 3.14.6
[Link]/GustaFranz Pagina 6

Você também pode gostar