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

Manipulação de Arquivos com PathLib

O documento aborda a manipulação de arquivos e diretórios utilizando a biblioteca PathLib em Python, destacando suas vantagens em relação a APIs de baixo nível. Ele também discute diferentes sistemas de arquivos e apresenta desafios práticos para listar e manipular arquivos. Além disso, menciona a interoperabilidade entre sistemas operacionais e a integração com bibliotecas assíncronas.

Enviado por

pinatofilho
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)
3 visualizações50 páginas

Manipulação de Arquivos com PathLib

O documento aborda a manipulação de arquivos e diretórios utilizando a biblioteca PathLib em Python, destacando suas vantagens em relação a APIs de baixo nível. Ele também discute diferentes sistemas de arquivos e apresenta desafios práticos para listar e manipular arquivos. Além disso, menciona a interoperabilidade entre sistemas operacionais e a integração com bibliotecas assíncronas.

Enviado por

pinatofilho
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

Manipulando arquivos e

diretórios com PathLib


Live de Python # 199
Roteiro

1. Manipulação de arquivos 3. Resolvendo problemas


Uma introdução ao sistema de arquivos Usando a pathlib

2. PahtLib 4. Extras
O básico necessário PathLib3x, aioPathlib
[Link]/dunossauro [Link]/livedepython [Link]@[Link]

Ajude o projeto <3


Acássio Anjos, Ademar Peixoto, A Earth, Alexandre Harano, Alexandre Souza, Alexandre Takahashi, Alexandre Villares, Alex
Lima, Alynne Ferreira, Alysson Oliveira, Ana Carneiro, Ana Padovan, Andre Azevedo, André Rocha, Aquiles Coutinho,
Arnaldo Turque, Ayrton Freeman, Bloquearsites Farewall, Bruno Barcellos, Bruno Freitas, Bruno Guizi, Bruno Oliveira, Bruno
Ramos, Caio Nascimento, César Almeida, Christiano Morais, Clara Battesini, Cleber Santos, Daniel Haas, Danilo Segura,
Dartz Dartz, David Kwast, Delton Porfiro, Dhyeives Rodovalho, Diego Guimarães, Dilenon Delfino, Donivaldo Sarzi, Douglas
Bastos, Douglas Braga, Douglas Martins, Douglas Zickuhr, Emerson Rafael, Érico Andrei, Eugenio Mazzini, Euripedes
Borges, Evandro Avellar, Fabiano Gomes, Fabio Barros, Fábio Barros, Fabio Castro, Fábio Thomaz, Felipe Rodrigues,
Fernanda Prado, Flávio Meira, Flavkaze Flavkaze, Franklin Silva, Gabriel Barbosa, Gabriel Simonetto, Geandreson Costa,
Guilherme Felitti, Guilherme Gall, Guilherme Ostrock, Gustavo Dettenborn, Heitor Fernandes, Henrique Junqueira, Igor
Taconi, Ismael Ventura, Israel Gomes, Italo Silva, Jair Andrade, Janael Pinheiro, João Lugão, Johnny Tardin, Jonatas Leon,
Jonatas Oliveira, Jônatas Silva, Jorge Plautz, Jose Mazolini, Juan Gutierrez, Juliana Machado, Julio Silva, Kaio Peixoto,
Kaneson Alves, Leandro Botassio, Leandro Miranda, Leonardo Cruz, Leonardo Mello, Leonardo Nazareth, Lucas Adorno,
Lucas Mello, Lucas Mendes, Lucas Oliveira, Lucas Polo, Lucas Praciano, Lucas Teixeira, Lucas Valino, Luciano Silva,
Luciano Teixeira, Luiz Junior, Luiz Lima, Maiquel Leonel, Marcelino Pinheiro, Marcelo Matte, Márcio Martignoni, Marco
Mello, Marcos Gomes, Marco Yamada, Maria Clara, Marina Passos, Mario Deus, Matheus Silva, Matheus Vian, Murilo
Andrade, Murilo Cunha, Murilo Viana, Natan Cervinski, Nicolas Teodosio, Osvaldo Neto, Patricia Minamizawa, Patrick Brito,
Paulo Tadei, Pedro Henrique, Pedro Pereira, Peterson Santos, Priscila Santos, Rafael Lopes, Rafael Romão, Ramayana
Menezes, Reinaldo Silva, Renan Moura, Renato Veirich, Richard Nixon, Riverfount Riverfount, Rodrigo Ferreira, Rodrigo
Freire, Rodrigo Junior, Rodrigo Vaccari, Rogério Sousa, Ronaldo Silva, Rui Jr, Samanta Cicilia, Sara Selis, Thiago Araujo,
Thiago Borges, Thiago Bueno, Thiago Curvelo, Thiago Moraes, Tony Dias, Victor Wildner, Vinícius Bastos, Vinicius
Figueiredo, Vítor Gomes, Vitor Luz, Vlademir Souza, Vladimir Lemos, Wellington Abreu, Wesley Mendes, William Alves,
Willian Lopes, Wilson Neto, Yury Barros

Obrigado você
O sistema de
arquivos FS
Sistema de arquivos

Afinal como manipulamos arquivos e pastas no sistema?

Usamos o Sistema de arquivos

[Link]
Sistema de arquivos

Afinal como manipulamos arquivos e pastas no sistema?

Usamos o Sistema de arquivos

"O sistema de arquivos é responsável por dar


nomes, armazenar e recuperar os arquivos no
seu sistema operacional"

[Link]
Sistemas de arquivos

O que devemos considerar é que diferentes sistemas operacionais usam


diferentes sistemas de arquivos.

● Windows
○ FAT
○ FAT32
○ NTFS
● Linux
○ EXT4
○ BtrFS
○ ZFS
● MacOS
○ APFS
Sistemas de arquivos

O que devemos considerar é que diferentes sistemas operacionais usam


diferentes sistemas de arquivos.

● Windows
○ FAT MS rules
○ FAT32 ???
○ NTFS
● Linux
○ EXT4
○ BtrFS
○ ZFS POSIX
● MacOS
○ APFS
Sistemas de arquivos

O que devemos considerar é que diferentes sistemas operacionais usam


diferentes sistemas de arquivos.

● Windows
○ FAT MS rules
○ FAT32 ???
○ NTFS
● Linux
○ EXT4
○ BtrFS
○ ZFS POSIX
● MacOS
○ APFS Interface portável
entre sistemas
operacionais
Diferentes sistemas de arquivos

De forma totalmente superficial. Um problema inicial é

Os caminhos de diretórios/pastas/arquivos mudam de acordo com seu


sistema operacional.

O mesmo código escrito no windows, não funciona no linux e no mac


Um exemplo simples

files

pasta_0 pasta_1

pasta_n
O desafio

Listar a pasta_0, que está dentro da pasta files, caso existam arquivos .txt
dentro da pasta_0, printar o conteúdo dos arquivos.

files

pasta_0

*.txt
O desafio

Listar a pasta_0, que está dentro da pasta files, caso existam arquivos .txt
dentro da pasta_0, printar o conteúdo dos arquivos.
Listar a pasta_0, que está dentro da pasta files, caso
existam arquivos .txt dentro da pasta_0, crie uma nova
pasta chamada desafio_2, e copie os arquivos para essa
pasta.

Desafio 2
O desafio 2
O desafio 2
API de baixo nível

Quando falamos de comunicação com o sistema operacional, e o FS, no


nosso caso. O Python conta com uma gama de bibliotecas

[Link]
API de baixo nível

Quando falamos de comunicação com o sistema operacional, e o FS, no


nosso caso. O Python conta com uma gama de bibliotecas

[Link]
API de baixo nível

[Link]
API de baixo nível

[Link]
API de baixo nível

[Link]
API de baixo nível

[Link]
Caminhos de mão única

O python, via um hack ([Link]) consegue converter paths POSIX em


paths windows.

[Link]
Path
Uma introdução lib
O que é a Pathlib?

A Pathlib é uma alternativa a todas as API de baixo nível

● os
● [Link]
● glob
● stat
● posixpath / ntpath / macpath (Finado Python 2)
● …
* Não cobre shutil, pois já é uma AP de alto nível
A história da pathlib

● PEP-355 - 2006
○ Um objeto Path, que implementa todas as operações de os,
[Link] e shtuil comuns para arquivos
○ REJEITADA
● Criação da pathlib - Jan/2012
○ Biblioteca externa que implementa a PEP-355
○ Com alguns detalhes extras
● PEP-428 - jun/2012 - Python 3.4
○ Inclusão da biblioteca externa ao biblioteca padrão
● Python 3.6 - 2016
○ Interoperabilidade com os módulos antigos
A ideia da Pathlib

A ideia da Pathlib é fornecer uma API orientada a objetos.

Assim como datatime é um objeto e não manipulação de strings e


números.

Além de não ter os problemas relacionados aos paths do windows,


fornecer uma API que permite que você manipule paths do linux no
windows, por exemplo.
Bom, chega de enrolação
Alguns exemplos básicos - Path
Alguns exemplos básicos - File
A estrutura da biblioteca

[Link]
A estrutura da biblioteca

De maneira geral,
sempre importaremos
Path

[Link]
A estrutura da biblioteca

De maneira geral,
sempre importaremos
Path

O python inicia a
classe concreta correta
para cada sistema

[Link]
A estrutura da biblioteca

Se quisermos fazer um Se quisermos fazer um


código que roda no código que roda no
linux, mas no windows windows, mas no linux

[Link]
Pathlib para manipular sistema de arquivos

● Arquivos
○ touch()
■ cria um novo arquivo ou altera seu timestamp
○ unlink()
■ remove um arquivo
● Paths
○ mkdir()
■ Cria uma pasta
○ rmdir()
■ remove uma pasta
● Tudo
○ rename
■ Renomeia o arquivo
Globing
Proble
Que vamos resolver
com Pathlib mas
De volta ao problema 1

Listar a pasta_0, que está dentro da pasta files, caso existam arquivos .txt
dentro da pasta_0, printar o conteúdo dos arquivos.

files

pasta_0

*.txt
Solução com Pathlib
Comparação
O problema 2

Listar a pasta_0, que está dentro da pasta files, caso existam


arquivos .txt dentro da pasta_0, crie uma nova pasta chamada
desafio_2, e copie os arquivos para essa pasta.
Solução com pathlib
Comparação
Extras 3x, async, ...
Sobre o shutil + pathlib
hmmmmmmmm
Asyncio + pathlib
Olha que lindo
[Link]/dunossauro [Link]/livedepython [Link]@[Link]

Ajude o projeto <3

Você também pode gostar