CodeGym /Java Course /Python SELF IT /Lavorare con i file su disco

Lavorare con i file su disco

Python SELF IT
Livello 21 , Lezione 5
Disponibile

6.1 Lavorare con i file

Python offre molte funzioni e moduli integrati per lavorare con i file e le directory. Le operazioni principali vengono eseguite utilizzando i moduli integrati os, shutil e altri.

Le tre operazioni principali sui file:

  • Copia
  • Spostamento
  • Eliminazione

Il modulo shutil è perfetto per queste operazioni.

Copia di un file


import shutil

shutil.copy('source.txt', 'destination.txt')
        

Spostamento di un file


import shutil

shutil.move('source.txt', 'destination.txt')
        

Eliminazione di un file


import os

os.remove('example.txt')
        

Più semplice che mai.

6.2 Verifica dell'esistenza di un file

Spesso è necessario verificare se un determinato file esiste o meno. Per questo il modulo os ha un metodo speciale — exists().

Verifica dell'esistenza di un file


import os

if os.path.exists('example.txt'):
    print("Il file esiste")
else:
    print("Il file non esiste")
    # Se il file non esiste, il programma eseguirà le azioni descritte nel blocco else.
    # Ad esempio, può mostrare un avviso, creare un nuovo file o uscire dal programma.

        

Se il file non esiste, il programma può gestirlo con condizioni o sollevando un'eccezione.

6.3 Verifica del tipo di oggetto: file o directory

Piuttosto spesso è necessario verificare se un oggetto è un file o una directory. Ad esempio, se si leggono tutti i contenuti di una directory e si devono elaborare i file uno ad uno, mentre le directory in modo diverso.

Per questi casi ci sono due metodi speciali — isdir(), che verifica se un oggetto è una directory, e isfile(), che verifica se un oggetto è un file.

Verifica — è una directory o no


if os.path.isdir('example_directory'):
    print("È una directory")
else:
    print("Non è una directory")
        

Verifica — è un file o no


if os.path.isfile('example_file'):
    print("È un file")
else:
    print("Non è un file")
        

Queste sono funzioni molto utili che userai più spesso di quanto pensi. :)

6.4 Lavorare con i percorsi

Il modulo os ha un sottomodulo os.path, che contiene funzioni utili per lavorare con file e directory. Eccone alcune:

Ottenere l'estensione di un file

La funzione splitext() divide il nome di un file in due parti e restituisce una lista di due elementi: il nome e l'estensione.


import os.path

# Ottenere l'estensione di un file
file_path = 'example.txt'
file_extension = os.path.splitext(file_path)[1]
print(f"Estensione del file: {file_extension}")
        

Ottenere il nome del file senza estensione


import os.path

# Ottenere il nome del file senza estensione
file_path = 'example.txt'
file_name = os.path.splitext(os.path.basename(file_path))[0]
print(f"Nome del file senza estensione: {file_name}")
        

Ottenere il nome del file dal percorso

La funzione basename() restituisce solo il nome del file, tagliando tutto il percorso fino ad esso.


import os.path

# Ottenere il nome del file dal percorso
file_path = '/path/to/example.txt'
file_name = os.path.basename(file_path)
print(f"Nome del file: {file_name}")
        

Ottenere la directory dal percorso

È altrettanto facile ottenere solo la directory dal nome del file utilizzando la funzione dirname().


import os.path

# Ottenere la directory dal percorso
file_path = '/path/to/example.txt'
directory = os.path.dirname(file_path)
print(f"Directory: {directory}")
        

Unire i percorsi

Se hai separatamente una directory e separatamente un nome di file, puoi ottenere il percorso completo a quel file.


import os.path

# Unire i percorsi
directory = '/path/to'
file_name = 'example.txt'
full_path = os.path.join(directory, file_name)
print(f"Pieno percorso: {full_path}")
        

6.5 Percorsi indipendenti dalla piattaforma

Quando lavori con i percorsi, è importante considerare le differenze tra i sistemi operativi. I separatori di percorso possono differire, e un codice che funziona su una piattaforma potrebbe non funzionare su un'altra. Per evitare problemi nel trasferimento del codice tra diversi sistemi operativi, usa le funzioni os.path.join(), os.path.abspath() e os.path.dirname(), che garantiscono la compatibilità con diverse piattaforme.

Per esempio:


import os

# Unire i percorsi in modo indipendente dalla piattaforma
directory = 'some_directory'
file_name = 'example.txt'
full_path = os.path.join(directory, file_name)
print(f"Pieno percorso: {full_path}")
        

Ottenere il percorso assoluto

Se hai solo il percorso relativo alla directory di lavoro corrente, ma vuoi convertirlo in assoluto, c'è la funzione abspath().


import os.path

# Ottenere il percorso assoluto
relative_path = 'example.txt'
absolute_path = os.path.abspath(relative_path)
print(f"Percorso assoluto: {absolute_path}")
        

Importante! Usa sempre le funzioni di sistema quando lavori con i percorsi, poiché il tuo codice potrebbe essere eseguito su un altro sistema operativo, dove il separatore di file non è \, ma /, o dove «:» nei percorsi sono vietati o altro.

Commenti
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION