Py a4 python-file

1,856 views

Published on

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
1,856
On SlideShare
0
From Embeds
0
Number of Embeds
3
Actions
Shares
0
Downloads
23
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Py a4 python-file

  1. 1. Apertura di un file open(filename, mode) restituisce un oggetto file filename è il nome del file mode determina la modalità di apertura: 'r' : sola lettura 'w' sola scrittura (un file già esistente verrà sovrascritto) 'a’ append; i dati scritti nel file verranno aggiunti alla fine. 'r+' lettura e scrittura. mode è un argomento opzionale; 'r’ sarà l’assunzione in caso non sia specificato. Linguaggi dinamici – A.A. 2009/2010 2
  2. 2. Apertura di un file binario ATTENZIONE: solo per sistemi windows: Python su Windows distingue tra file di testo e binari I caratteri di end-of-line nei file di testo sono automaticamente modificati quando si leggono e scrivono dati 'b' aggiunto al parametro mode apre il file in modalità binaria (ad es. 'rb', 'wb', 'r+b’, …) Su altre piattaforme i due tipi di file sono gestiti allo stesso modo Linguaggi dinamici – A.A. 2009/2010 3
  3. 3. Lettura di un file: f.read() Per leggere il contenuto di un file: f.read(size) Legge una certa quantità di dati e la restituisce come stringa size è un argomento opzionale Se size è omesso o negativo verrà letto l’intero contenuto del file: attenzione alla dimensione! Altrimenti, verranno letti e restituiti size byte Quando viene raggiunta la fine del file, f.read() restituisce una stringa vuota (”) Linguaggi dinamici – A.A. 2009/2010 4
  4. 4. Lettura di un file Per leggere una linea alla volta di un file: f.readline Un approccio molto comodo per leggere diverse righe di un file di testo è di iterare sull’oggetto file for line in f: print line Linguaggi dinamici – A.A. 2009/2010 5
  5. 5. Scrittura su file f.write(string) scrive il contenuto di string nel file f, restituendo None Per scrivere qualcosa che non sia una stringa su un file di testo occorre prima convertirlo in stringa: value = ('the answer', 42) s = str(value) f.write(s) Linguaggi dinamici – A.A. 2009/2010 6
  6. 6. Lettura/scrittura non sequenziale f.tell() restituisce un intero che raprresenta la posizione corrente del file f Misurata in byte dall’inizio del file f.seek(offset, from_what) sposta la posizione corrente del file f. La posizione è calcolata aggiungendo offset a un reference point: from_what = 0 misura dall’inizio del file (default) from_what = 1 dalla posizione corrente from_what = 2 dalla fine del file Linguaggi dinamici – A.A. 2009/2010 7
  7. 7. ESEMPI: file.py Chiusura di un file Terminate le operazioni sul file, chiamare f.close() per chiuderlo e liberare le risorse associate Dopo la chiamata f.close(), qualunque tentativo di utilizzo del file fallirà automaticamente Linguaggi dinamici – A.A. 2009/2010 8
  8. 8. ESEMPI: fileExcept.py File exception ATTENZIONE: quando si utilizzano file, bisogna sempre essere pronti a gestire errori non attesi Meccanismo delle eccezioni: quando viene incontrato un problema in un’operazione su file, python solleva una IOError exception Come sempre, la rappresentazione in stringa dell’eccezione descrive il problema Linguaggi dinamici – A.A. 2009/2010 9
  9. 9. Modulo os.path Il modulo os contiene os.path, un modulo molto utile per la manipolazione dei path Maggiore portabilità del codice rispetto alla manipolazione diretta delle stringhe riguardanti percorsi del file system: import os.path os.path.join(“snakes”, “Python”) Produce: ‘snakesPython’ (windows) ‘snakes/Python’ (osX, unix, linux, …) Linguaggi dinamici – A.A. 2009/2010 10
  10. 10. Modulo os.path Esiste anche la funzione inversa: os.path.split, che separa l’ultimo componente di un path Restitiusce una tupla con due componenti: il path della directory parente e l’ultimo componente del path Ad esempio, in windows: os.path.split(“C:Program FilesPython25Lib”) produce: (‘C:Program FilesPython25’, ‘Lib’) Su unix: os.path.split(“/usr/bin/python”) produce (‘/usr/bin’, ‘python’) Linguaggi dinamici – A.A. 2009/2010 11
  11. 11. Contenuto di directory Modulo os.listdir Restituisce una lista con il contenuto della directory (file, sotto-directory, ecc.) Ad esempio: os.listdir(“C:Program FilesPython25”) [‘DLLs’, ‘Doc’, ‘include’, ‘Lib’, ‘libs’, ‘LICENSE.txt’, ‘NEWS.txt’, ‘py.ico’, ‘pyc.ico’, ‘python.exe’, ‘pythonw.exe’, ‘pywin32- wininst.log’, ‘README.txt’, ‘Removepywin32.exe’, ‘Scripts’, ‘tcl’, ‘Tools’, ‘w9xpopen.exe’] Linguaggi dinamici – A.A. 2009/2010 12
  12. 12. ESEMPI: osExamples.py Contenuto di directory Per determinare se un path si riferisce a un file o a una directory: os.path.isfile restituisce True in caso di file os.path.isdir restituisce True in caso di directory Entrambi restituiscono False se il file non esiste os.path.isfile(“C:Windows”) False os.path.isdir(“C:Windows”) True Linguaggi dinamici – A.A. 2009/2010 13
  13. 13. Operazioni su file e directory I moduli shutil e os contengono funzioni per operare velocemente sui file Operazioni per rinominare, spostare, copiare e rimuovere file shutil.move si può utilizzare per: rinominare un file: import shutil shutil.move(“server.log”, “server.log.backup”) spostare un file in un’altra directory: shutil.move(“old mail.txt”, “C:dataarchive”) Linguaggi dinamici – A.A. 2009/2010 14
  14. 14. ESEMPI: copy.py Operazioni su file e directory Allo stesso modo funziona shutil.copy: shutil.copy(“important.dat”, “C:backups” Per cancellare un file: os.remove(“junk.dat”) Per creare una nuova directory: os.mkdir(“C:photoszoosnakes”) (la directory parent deve essere esistente) os.makedirs(“C:photoszoosnakes”) (crea eventualmente tutte le directory parent) Per rimuovere una directory vuota: os.rmdir(“C:photoszoosnakes”) Linguaggi dinamici – A.A. 2009/2010 15
  15. 15. ESEMPI: globExamples.py Modulo glob “Globbing” nel linguaggio degli hacker è l’espansione delle wildcard nei nomi di file Python fornisce una funzione glob, nel modulo glob, che implementa il globbing del contenuto di una directory La funzione glob.glob riceve in input un glob pattern e restituisce una lista di nomi di file/path Ad esempio, per elencare il contenuto della directory C:Program Files che inizia per M: import glob glob.glob(“C:Program FilesM*”) [‘C:Program FilesMessenger’, … ] Linguaggi dinamici – A.A. 2009/2010 16
  16. 16. Modulo pickle Come si procede quando si vogliono salvare su file strutture dati complesse come list, dictionary, istanze di classi? Python fornisce un modulo standard chiamato pickle, che evita ai programmatori la scrittura di codice per il salvataggio / caricamento dati Questo modulo può prendere in input praticamente qualunque oggetto Python e convertirlo in una rappresentazione testuale (stringa). Questa operazione è detta pickling La ricostruzione dell’oggetto dalla rappresentazione in stringa è detta unpickling Linguaggi dinamici – A.A. 2009/2010 17
  17. 17. ESEMPI: pickling.py Modulo pickle unpickling.py Dato un oggetto x e un oggetto file f aperto in scrittura, è sufficiente una sola linea di codice per effettuare il pickling: pickle.dump(x, f) Per effettuare l’unpickling dell’oggetto, se f è un oggetto file aperto in lettura: x = pickle.load(f) Linguaggi dinamici – A.A. 2009/2010 18

×