Python versione Bignami - Funzionalità stile shell
cp, rm, mv
import shutil
copyfile(src, dst)
copia file, per nome.copyfileobj(fsrc, fdst)
copia file usando oggetti di tipo file.copymode(src, dst)
copia i permessi (non il contenuto) dal filesrc
al filedst
.copystat(src, dst)
copia i permessi e l'ora di modifica (non il contenuto) dal filesrc
al filedst
.copy(src, dst)
copia il file e tutti i suoi permessi.copy2(src, dst)
copia il file, i suoi permessi e l'ora di modifica.copytree(src, dst[, symlinks=False])
copia ricorsivamente un albero di directory, usandocopy2
. Sesymlinks
è True, copia i link simbolici come link simboloci, altrimenti ne copia il contenuto.rmtree(path[, ignore_errors=False[, onerror=None]])
cancella un intero albero di directory. In caso di errore, seignore_errors
èTrue
ignora, seonerror
è una funzione la chiama, altrimenti lancia un'eccezione.move(src, dst)
equivale amv
: se dst è nello stesso filesystem disrc
lo rinomina, altrimenti fa la copia e poi cancellasrc
Pecorsi
import os.path
os.path.abspath(path)
dato un percorso relativo, restituisce il percorso assolutoos.path.basename(path)
dato un percorso di un file, restituisce il solo nome del fileos.path.dirname(path)
dato un percorso di un file, restituisce il nome della directory, senza il nome del fileos.path.exists(path)
restituisce True se il dato file esisteos.path.expanduser(path)
restituisce il percorso dopo aver espanso~
o~utente
come farebbe la shellos.path.expandvars(path)
restituisce il percorso dopo aver espanso le variabili di ambiente come farebbe la shell. Per esempio:os.path.expandvars("$HOME/dati")
equivale aos.path.expanduser("~/dati")
os.path.getatime(path)
restituisce il timestamp Unix dell'ultimo accesso al fileos.path.getmtime(path)
restituisce il timestamp Unix dell'ultima modifica al fileos.path.getctime(path)
restituisce il timestamp Unix della creazione del file, o della modifica dei suoi attributios.path.getsize(path)
restituisce la dimensione del file in byteos.path.isabs(path)
restituisce True seos.path
è un persorso assolutoos.path.isfile(path)
restituisce True seos.path
è un file normaleos.path.isdir(path)
restituisce True seos.path
è una directoryos.path.islink(path)
restituisce True seos.path
è un link simbolicoos.path.join(path1[, path2[, ...]])
concatena i path usando i separatori correttios.path.samefile(path1, path2)
restituisce True se i due path si riferiscono allo stesso file (anche se i nomi sono diversi, come nel caso degli hard link)os.path.sameopenfile(fp1, fp2)
restituisce True se i due oggetti file sono aperti sullo stsso fileos.path.split(path)
restituisce due stringhe: la directory e il nome del fileos.path.splitext(path)
restituisce due stringhe: il percorso con il nome del file ma senza l'estensione, e l'estensione
Espansione degli asterischi
Queste funzioni lavorano con pattern che contengono *
, ?
o classi di
caratteri tra quadre, allo stesso modo della shell.
import glob
glob.glob(pathname)
restituisce una lista di tutti i file che fanno match del pattern dato
import fnmatch
fnmatch.fnmatchcase(filename, pattern)
restituisce True se il nome di file dato fa match con il patternfnmatch.fnmatch(filename, pattern)
restituisce True se il nome di file dato fa match con il pattern, ma non fa differenza tra maiuscole e minuscolefnmatch.filter(nomi, pattern)
restituisce una lista con solo quei nomi che fanno match con il pattern
File temporanei
import tempfile
f = tempfile.TemporaryFile([dir='directory'])
restituisce un oggetto file aperto su un file temporaneo. Se si dà il parametrodir
, il file viene creato nella directory data. Il file viene cancellato non appena creato, e non è visibile sul file system.f = tempfile.NamedTemporaryFile([suffix=''][, prefix=''][, dir='directory'])
come TemporaryFile, ma il file ha un nome. Il file, una volta chiuso, viene cancellato. È possibile dare un prefisso e un'estensione da usare per il nome del file. Il nome si legge conf.name
.nome = mkstemp([suffix[, prefix[, dir]]])
crea un file temporanea e ne restituisce il nome. Il file non viene cancellato automaticamente.nome = mkdtemp([suffix[, prefix[, dir]]])
crea una directory temporanea e ne restituisce il nome. La directory non viene cancellata automaticamente.
Ambiente del programma
import os
os.environ
dizionario (modificabile) con le variabili di ambienteos.chdir(path)
cambia la directory correnteos.getcwd()
restituisce la directory correnteos.getpid()
restituisce il PID (Process ID)os.umask(mask)
setta l'umask e restituisce l'umask precedente
Operazioni su file e directory
import os
-
os.access(path, mode)
guarda se e come si può accedere alla directory o file dati.mode
può avere come valore una o piú delle seguenti costanti, or-ate assieme (esempio:os.R_OK | os.W_OK
):os.F_OK Esiste os.R_OK Si può leggere os.W_OK Si può scrivere os.X_OK Si può eseguire
-
os.chmod(path, mode)
cambia i permessi di un file. os.chown(path, uid, gid)
cambia proprietario e gruppo di un file. Per non cambiare il gruppo o il proprietario, usare -1os.link(src, dst)
crea un hard link chiamatodst
al filesrc
os.listdir(path)
elenca i file nella directory dataos.mkdir(path[, mode])
crea una directoryos.makedirs(path[, mode])
crea una directory ricorsivamente, creando anche tutte le directory superiori mancantios.readlink(path)
restituisce il file a cui punta un link simbolicoos.remove(path)
ounlink(path)
cancella un fileos.rmdir(path)
cancella una directory, se è vuotaos.removedirs(path)
cancella una directory, se è vuota, poi la directory superiore, se è vuota, e cosí via, finché trova directory vuoteos.rename(src, dst)
rinomina un file-
os.stat(path)
restituisce informazioni sul file. Il risultato è un oggetto con i seguenti campi:st_mode permessi del file st_ino numero di inode st_dev id del file system st_nlink numero di hard link st_uid user ID del proprietario st_gid group ID del proprietario st_size dimensione del file in byte st_atime ora di ultimo accesso st_mtime ora di ultima modifica st_ctime ora di creazione o modifica degli attributi
-
os.symlink(src, dst)
crea un link simbolico chiamatodst
al filesrc
os.walk
os.walk(dir[, topdown=True])
visita ricorsivamente tutto il contenuto della
directory, generando una tupla (dirpath, dirnames, filenames)
per ogni
directory visitata.
Gli elementi della tupla rappresentano:
dirpath
il percorso della directorydirnames
una lista con tutte le sue sottodirectoryfilenames
una lista coi nomi dei file
se topdown=True
e viene modificata dirnames
togliendo delle directory,
os.walk
evita di visitarle.
Per accedere a uno dei file in filenames
, basta usare
os.path.join(dirpath, file)
.
Normalmente os.walk
genera prima la tupla della directory superiore poi le
tuple delle directory inferiori. Se topdown=False
, allora genera prima le
tuple delle directory inferiori e poi quella della directory superiore.
Esempio:
# Calcolo della dimensione di tutti i file contenuti in una directory import os dimensione = 0 for root, dirs, files in os.walk(os.path.expanduser("~")): for file in files: dimensione += os.path.getsize(os.path.join(root, file)) print "Hai", dimensione, "byte di roba nella home"