Continuo l'esame delle funzioni fornite dal modulo os per l'interazione con file e directory (cartelle), iniziato nel post precedente, qui.
listdir(path) ci restituisce la lista contenente i nomi degli oggetti contenuti in path. Non sono in ordine e non sono inclusi i nomi speciali "." e ".."
Come si vede dallo screenshot la lista possiamo sortarla noi.
mkdir(path, [mode]) crea la directory path, con modalità (permessi) mode (opzionale, non darlo va benissimo).
come si vede abbiamo creato la dir nuova che adesso cancelliamo
Per cancellare uno o più file usare remove.
È possibile creare più directories una dentro l'altra con makedirs.
rename(src, dst) cambia il nome a un file o una dir, da src a dst.
Un altro modulo contenente funzioni di manipolazione dei pathname è os.path.
abspath(path) restituisce il nome assoluto, cioè dalla root
basename() restituisce il nome senza percorso
Attenzione che è diverso dal comando di shell basename, come si vede dall'ultimo esempio.
dirname(path) restituisce la directory di path; è l'opposto di basename visto prima
exists() ci dice se l'oggetto esiste; dipende anche dai permessi.
expanduser() l'abbiamo già visto, comunque ecco
expandvars() ci permette di ritrovare le variabili di sistema
getsize() ritorna le dimensioni, in bytes
Attenzione che per una dir ritorna 4096 (o un'altra dimensione fissa, dipende dal file system) e non quella dei files che contiene.
isfile() e isdir() ci dicono se il file e la directory esistono
islink() ci dice se esiste il link simbolico
join() unisce i path; attenzione che è maliziosa, vedi il secondo esempio
se del caso usare normpath(); attenzione ai pasticci
relpath() ritorna il nome relativo alla directory corrente o a una posizione data
split() divide la path in una coppia in cui il secondo termine è l'ultima componente del path
splitext() separa l'estensione dalla path
OK, queste sono le funzioni principali che Python ci mette a disposizione per gestire file, directory, link e quant'altro. Non sono tutte qui ma a questo punto avrete capito che prima di metterci a scriverne di nostre conviene vedere se non ci sono già. Le trovate qui
E, naturalmente la stessa cosa vale per gli altri moduli, per esempio fate un salto a sys
O volete che faccia un altro post noioso come questo?
Juhan
Indice del sequel "Mission Python" qui.
Alla prossima!
Grazie.
RispondiElimina