023 Python 3 – Gestire cartelle e files con Python 3

26 Marzo, 2023 (22:59) | Python | By: sargonsei

023-Python 3 – Gestire cartelle e files con Python 3

01) Cose da sapere prima di procedere.
In questi appunti, per cartella di lavoro si intende la cartella in cui si trova lo script che deve essere “lanciato”, oppure la cartella in cui è stata aperta la IDLE Shell; tuttavia, anteponendo il percorso completo al nome del file o della cartella che si intende manipolare, è possibile manipolare il contenuto di una cartella diversa dalla cartella di lavoro.
Sistemi operativi diversi possono avere metodi diversi per codificare files, cartelle, e percorsi.
Per manipolare cartelle e files ubicati nella cartella di lavoro, Python 3 ha i suoi comandi specifici indipendenti dal Sistema Operativo, ma per la codifica dei percorsi relativi a cartelle e files ubicati in cartelle diverse dalla cartella di lavoro, Python 3 richiede che il nome di files e cartelle oggetto di manipolazione, siano specificati anteponendo il percorso al nome, e il percorso deve essere scritto così come lo scriverebbe il Sistema Operativo.
Per esempio: il percorso che per Windows si scrive “\cartella1\cartella2\cartella3”, per Linux si scrive “/cartella1/cartella2/cartella3”.

02) Esempi di utilizzo dei comandi.
file_uno = open("lista.txt", "x") # Se, nella cartella corrente, il file "lista.txt" non esiste, lo crea e lo apre, altrimenti genera un errore.
file_uno = open("lista.txt", "w") # Se, nella cartella corrente, il file "lista.txt" non esiste, lo crea e lo apre, altrimenti lo sovrascrive e lo apre.
file_uno.close() # Chiude il file aperto in precedenza

from pathlib import Path # Importa la classe "Path" contenuta nel modulo "pathlib"
Path.home() # Visualizza il percorso assoluto della home dell’utente
PERCORSO = Path.home(); print("Percorso: ", PERCORSO)

import os # Importa il modulo os
os.chdir(r"/home/lmde-5/Scrivania") # La cartella di lavoro diventa "/home/lmde-5/Scrivania"
os.chdir(r"/mnt/Dati1/Guide") # La cartella di lavoro diventa "/mnt/Dati1/Guide"

os.listdir() # Visualizza la lista di files e cartelle contenuti nella cartella di lavoro corrente.

os.mkdir("test") # Crea la cartella "test" nella cartella corrente
os.rmdir("test") # Rimuove la cartella "test" nella cartella corrente

os.listdir("/mnt/Dati1/Guide/test") # Visualizza la lista di files e cartelle contenuti nella cartella "/mnt/Dati1/Guide/test".
os.mkdir("/mnt/Dati1/Guide/test/test") # Crea la cartella "test" nella cartella "/mnt/Dati1/Guide/test"
os.path.isdir("/mnt/Dati1/Guide/test/test") # Verifica se nella cartella "/mnt/Dati1/Guide/test" esiste la cartella "test"
os.rmdir("/mnt/Dati1/Guide/test/test") # Rimuove la cartella "test" dalla cartella "/mnt/Dati1/Guide/test/test"
os.path.isdir("/mnt/Dati1/Guide/test/test") # Verifica se nella cartella "/mnt/Dati1/Guide/test" esiste la cartella "test"

os.remove("test.txt") # Cancella il file "test.txt" contenuto nella cartella corrente
os.unlink("/mnt/Dati1/Guide/Guida-Python3/test.txt") # Cancella il file o il collegamento "test.txt" contenuto nella cartella "/mnt/Dati1/Guide/Guida-Python3"
os.rename("/mnt/Dati1/Guide/test/lista.txt", "rinominato.txt") # Rinominare come "rinominato.txt" il file "lista.txt" contenuto nella cartella "/mnt/Dati1/Guide/test"

import shutil # Importa il modulo shutil
shutil.copy("/mnt/Dati1/Guide/Guida-Python3/lista.txt", "/mnt/Dati1/Guide/test") # Copia "/mnt/Dati1/Guide/Guida-Python3/lista.txt" nella cartella "/mnt/Dati1/Guide/test"
shutil.move("/mnt/Dati1/Guide/test/rinominato.txt", "/mnt/Dati1/Guide") # Sposta "/mnt/Dati1/Guide/test/rinominato.txt" nella cartella "/mnt/Dati1/Guide"

03) Esempi di output dei comandi.
>>> from pathlib import Path # Importa la classe "Path" contenuta nel modulo "pathlib"
>>> import os # Importa il modulo os
>>> import shutil # Importa il modulo shutil
>>> Path.home() # Visualizza il percorso assoluto della home dell’utente
PosixPath('/home/lmde-5')
>>> PERCORSO = Path.home(); print("Percorso: ", PERCORSO)
Percorso: /home/lmde-5
>>> os.chdir(r"/home/lmde-5/Scrivania") # La cartella di lavoro diventa "/home/lmde-5/Scrivania"
>>> os.listdir() # Visualizza la lista di files e cartelle contenuti nella cartella di lavoro corrente.
['AggiornaESpegne.txt', 'grub.cfg.copia', 'CambioSmartphone.odt', 'Computer.txt', 'AnnaSpesaLMDE.txt', 'CambioSmartphone.txt', 'xxx.txt', 'KdeConnect.odt']
>>> os.chdir(r"/mnt/Dati1/Guide") # La cartella di lavoro diventa "/mnt/Dati1/Guide"
>>> os.listdir() # Visualizza la lista di files e cartelle contenuti nella cartella di lavoro corrente.
['Guida-ImageMagick', 'Guida-pdftk', 'Guida-Python3', 'Guida-ScriptBash', 'GuidaFfmpeg']
>>> os.mkdir("test") # Crea la cartella "test" nella cartella corrente
>>> os.mkdir("/mnt/Dati1/Guide/test/prova") # Crea la cartella "prova" nella cartella "/mnt/Dati1/Guide/test"
>>> os.path.isdir("/mnt/Dati1/Guide/test/prova") # Verifica se nella cartella "/mnt/Dati1/Guide/test" esiste la cartella "prova"
True
>>> os.listdir() # Visualizza la lista di files e cartelle contenuti nella cartella di lavoro corrente.
['Guida-ImageMagick', 'Guida-pdftk', 'Guida-Python3', 'Guida-ScriptBash', 'GuidaFfmpeg', 'test']
>>> os.listdir("/mnt/Dati1/Guide/test") # Visualizza la lista di files e cartelle contenuti nella cartella "/mnt/Dati1/Guide/test".
['prova']
>>> shutil.copy("/mnt/Dati1/Guide/Guida-Python3/lista.txt", "/mnt/Dati1/Guide/test") # Copia "/mnt/Dati1/Guide/Guida-Python3/lista.txt" nella cartella "/mnt/Dati1/Guide/test"
'/mnt/Dati1/Guide/test/lista.txt'
>>> os.rename("/mnt/Dati1/Guide/test/lista.txt", "rinominato.txt") # Rinominare come "rinominato.txt" il file "lista.txt" contenuto nella cartella "/mnt/Dati1/Guide/test"
>>> os.listdir() # Visualizza la lista di files e cartelle contenuti nella cartella di lavoro corrente.
['Guida-ImageMagick', 'Guida-pdftk', 'Guida-Python3', 'Guida-ScriptBash', 'GuidaFfmpeg', 'rinominato.txt', 'test']
>>> os.listdir("/mnt/Dati1/Guide/test/prova") # Visualizza la lista di files e cartelle contenuti nella cartella "/mnt/Dati1/Guide/test/prova".
[]
>>> shutil.move("rinominato.txt", "/mnt/Dati1/Guide/test/prova") # Sposta "rinominato.txt" dalla cartella di lavoro corrente alla cartella "/mnt/Dati1/Guide/test/prova"
'/mnt/Dati1/Guide/test/prova/rinominato.txt'
>>> os.listdir() # Visualizza la lista di files e cartelle contenuti nella cartella di lavoro corrente.
['Guida-ImageMagick', 'Guida-pdftk', 'Guida-Python3', 'Guida-ScriptBash', 'GuidaFfmpeg', 'test']
>>> os.listdir("/mnt/Dati1/Guide/test/prova") # Visualizza la lista di files e cartelle contenuti nella cartella "/mnt/Dati1/Guide/test/prova".
['rinominato.txt']
>>> shutil.copy("/mnt/Dati1/Guide/test/prova/rinominato.txt", "/mnt/Dati1/Guide/test") # Copia "/mnt/Dati1/Guide/test/prova/rinominato.txt" nella cartella "/mnt/Dati1/Guide/test"
'/mnt/Dati1/Guide/test/rinominato.txt'
>>> os.unlink("/mnt/Dati1/Guide/test/rinominato.txt") # Cancella il file o il collegamento "rinominato.txt" contenuto nella cartella "/mnt/Dati1/Guide/test"
>>> os.listdir("/mnt/Dati1/Guide/test") # Visualizza la lista di files e cartelle contenuti nella cartella "/mnt/Dati1/Guide/test".
['prova']
>>> os.remove("/mnt/Dati1/Guide/test/prova/test.txt") # Cancella il file "test.txt" contenuto nella cartella "/mnt/Dati1/Guide/test/prova"
Traceback (most recent call last):
File "", line 1, in
os.remove("/mnt/Dati1/Guide/test/prova/test.txt") # Cancella il file "test.txt" contenuto nella cartella "/mnt/Dati1/Guide/test/prova"
FileNotFoundError: [Errno 2] No such file or directory: '/mnt/Dati1/Guide/test/prova/test.txt'
>>> os.remove("/mnt/Dati1/Guide/test/prova/rinominato.txt") # Cancella il file "rinominato.txt" contenuto nella cartella "/mnt/Dati1/Guide/test/prova"
>>> os.listdir("/mnt/Dati1/Guide/test/prova") # Visualizza la lista di files e cartelle contenuti nella cartella "/mnt/Dati1/Guide/test/prova".
[]
>>> os.path.isfile("/mnt/Dati1/Guide/test/prova/rinominato.txt") # Controlla se nella cartella "/mnt/Dati1/Guide/test/prova" esiste il file "rinominato.txt"
False
>>> os.rmdir("/mnt/Dati1/Guide/test/prova") # Rimuove la cartella "test" dalla cartella "/mnt/Dati1/Guide/test/prova"
>>> os.path.isdir("/mnt/Dati1/Guide/test/prova") # Verifica se nella cartella "/mnt/Dati1/Guide/test" esiste la cartella "prova"
False
>>> os.listdir("/mnt/Dati1/Guide/test") # Visualizza la lista di files e cartelle contenuti nella cartella "/mnt/Dati1/Guide/test".
[]
>>> os.listdir() # Visualizza la lista di files e cartelle contenuti nella cartella di lavoro corrente.
['Guida-ImageMagick', 'Guida-pdftk', 'Guida-Python3', 'Guida-ScriptBash', 'GuidaFfmpeg', 'test']
>>> os.rmdir("test") # Rimuove la cartella "test" nella cartella corrente
>>> os.listdir() # Visualizza la lista di files e cartelle contenuti nella cartella di lavoro corrente.
['Guida-ImageMagick', 'Guida-pdftk', 'Guida-Python3', 'Guida-ScriptBash', 'GuidaFfmpeg']
>>>