pathlib

Quando si lavora con i percorsi dei file in Python, il modulo pathlib offre un modo eccellente per gestirli in maniera orientata agli oggetti. Questo rappresenta un miglioramento rispetto alla manipolazione delle stringhe per i percorsi dei file, che può essere soggetta a errori e meno leggibile:
from pathlib import Path

p = Path('.')      # '.' rappresenta la directory corrente
print(p, type(p))  # <class 'pathlib.PosixPath'> o <class 'pathlib.WindowsPath'> a seconda del sistema operativo
È possibile unire i percorsi utilizzando l'operatore /. Ad esempio, per rappresentare un file example.txt nella directory corrente, si può fare:
file_path = p / 'example.txt'  # costruisce un nuovo percorso
print(file_path)               # example.txt
L'operatore / funziona indipendentemente dal sistema operativo sottostante e utilizza il separatore di percorsi corretto. Nota come l'operatore / sia in realtà il metodo magico __truediv__() nella classe Path, il che rende molto intuitivo lavorare con gli oggetti Path.
Per ottenere un percorso assoluto da un oggetto Path, si può utilizzare il metodo absolute():
abs_path = file_path.absolute()  # ottiene il percorso assoluto
print(abs_path)                  # stampa il percorso assoluto, come /home/user/example.txt su Unix o C:\\user\\example.txt su Windows
La classe Path ha molti metodi utili per operazioni comuni:
  • Path.cwd(): restituisce la directory di lavoro corrente come nuovo oggetto Path
  • Path.home(): restituisce la directory home come nuovo oggetto Path
  • Path.exists(): verifica se il percorso esiste
  • Path.is_file(): verifica se il percorso è un file
  • Path.is_dir(): verifica se il percorso è una directory
  • Path.mkdir(): crea una nuova directory nel percorso specificato
  • Path.glob(): restituisce un generatore che produce tutti i file corrispondenti nel percorso
Vediamo come utilizzare alcuni di questi metodi:
print(Path.cwd())             # stampa la directory di lavoro corrente
print(Path.home())            # stampa la directory home

if not file_path.exists():    # verifica se un file esiste
    print(f'Il file {file_path} non esiste.')

if file_path.is_file():       # verifica se è un file
    print(f'{file_path} è un file.')

new_dir = p / 'new_dir'
new_dir.mkdir(exist_ok=True)  # crea una nuova directory, non fa nulla se esiste già

for file in p.glob('*.txt'):  # itera su tutti i file .txt nella directory corrente
    print(file)
Ricorda di sostituire p con il tuo oggetto Path e 'example.txt' con il nome del tuo file, se necessario. Il modulo pathlib è uno strumento potente per la manipolazione di file e directory in Python.

Sfida: Da Relativo ad Assoluto

L'avvento degli archivi digitali ha reso la gestione di un enorme numero di documenti molto più accessibile. Tuttavia, gestire i percorsi verso questi documenti può a volte essere un po' complicato, soprattutto quando si tratta di percorsi relativi e assoluti. Lavori come sviluppatore software in una società di archiviazione digitale. Il tuo compito è costruire un programma che possa convertire percorsi relativi in percorsi assoluti per garantire un corretto tracciamento e accessibilità dei documenti.
Dato un percorso relativo, il tuo programma dovrebbe stampare il corrispondente percorso assoluto.
L'unica linea di input contiene un singolo percorso relativo.
L'output del tuo programma dovrebbe essere il percorso assoluto corrispondente al percorso relativo inserito.
Input
Output
./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