pathlib

Ao trabalhar com caminhos de ficheiros em Python, o módulo pathlib oferece uma excelente forma de lidar com eles de maneira orientada a objetos. Isto é uma melhoria em relação ao uso de manipulação de strings para caminhos de ficheiros, que pode ser propenso a erros e menos legível:
from pathlib import Path

p = Path('.')      # '.' representa o diretório atual
print(p, type(p))  # <class 'pathlib.PosixPath'> ou <class 'pathlib.WindowsPath'> dependendo do seu sistema operativo
Pode juntar caminhos usando o operador /. Por exemplo, para representar um ficheiro example.txt no diretório atual, pode fazer:
file_path = p / 'example.txt'  # constrói um novo caminho
print(file_path)               # example.txt
O operador / funciona independentemente do sistema operativo subjacente e utiliza o separador de caminho correto. Note como o operador / é na verdade o método mágico __truediv__() na classe Path, o que torna o trabalho com objetos Path muito intuitivo.
Para obter um caminho absoluto a partir de um objeto Path, pode usar o método absolute():
abs_path = file_path.absolute()  # obtém o caminho absoluto
print(abs_path)                  # imprime o caminho absoluto, como /home/user/example.txt no Unix ou C:\\user\\example.txt no Windows
A classe Path tem muitos métodos úteis para operações comuns:
  • Path.cwd(): retorna o diretório de trabalho atual como um novo objeto Path
  • Path.home(): retorna o diretório home como um novo objeto Path
  • Path.exists(): verifica se o caminho existe
  • Path.is_file(): verifica se o caminho é um ficheiro
  • Path.is_dir(): verifica se o caminho é um diretório
  • Path.mkdir(): cria um novo diretório no caminho especificado
  • Path.glob(): devolve um gerador que produz todos os ficheiros correspondentes no diretório
Vejamos como alguns destes métodos são utilizados:
print(Path.cwd())             # imprime o diretório de trabalho atual
print(Path.home())            # imprime o diretório home

if not file_path.exists():    # verifica se um ficheiro existe
    print(f'O ficheiro {file_path} não existe.')

if file_path.is_file():       # verifica se é um ficheiro
    print(f'{file_path} é um ficheiro.')

new_dir = p / 'new_dir'
new_dir.mkdir(exist_ok=True)  # cria um novo diretório, não faz nada se já existir

for file in p.glob('*.txt'):  # itera sobre todos os ficheiros .txt no diretório atual
    print(file)
Lembre-se de substituir p pelo seu objeto Path e 'example.txt' pelo nome do seu ficheiro conforme apropriado. O módulo pathlib é uma ferramenta poderosa para manipulação de ficheiros e diretórios em Python.

Desafio: De Relativo a Absoluto

O surgimento de arquivos digitais tornou a gestão de um grande número de documentos muito mais acessível. No entanto, gerir os caminhos para esses documentos pode, por vezes, ser um pouco complicado, especialmente quando se lida com caminhos relativos e absolutos. Trabalha como desenvolvedor de software numa empresa de arquivos digitais. A sua tarefa é construir um programa que possa converter caminhos relativos em caminhos absolutos para garantir o correto acompanhamento e acessibilidade dos documentos.
Dado um caminho relativo, o seu programa deve imprimir o caminho absoluto correspondente.
A única linha da entrada contém um único caminho relativo.
A saída do seu programa deve ser o caminho absoluto correspondente ao caminho relativo de entrada.
Entrada
Saída
./documents/report.pdf
/tmp/documents/report.pdf
folder2/file2.txt
/tmp/folder2/file2.txt
 

Constraints

Time limit: 2 seconds

Memory limit: 512 MB

Output limit: 1 MB

To check your solution you need to sign in
Sign in to continue