Modalità di apertura dei file in Python
La modalità di apertura di un file in Python determina come il file verrà aperto e utilizzato nel programma. La modalità predefinita è impostata su "r" (sola lettura), che restituisce un errore se il file non esiste.
Ecco le diverse modalità di apertura dei file in Python:
'r': apre il file in modalità di sola lettura. Se il file non esiste, viene restituito un errore.'r+': apre il file in modalità di lettura e scrittura. Se il file esiste, i dati non vengono eliminati. Se il file non esiste, viene restituito un errore.'w': apre il file in modalità di scrittura. Se il file esiste, i dati vengono eliminati. Se il file non esiste, viene creato un nuovo file.'w+': apre il file in modalità di lettura e scrittura. Se il file esiste, i dati vengono eliminati. Se il file non esiste, viene creato un nuovo file.'a': apre il file in modalità di append. È possibile scrivere alla fine dei dati già esistenti. Se il file non esiste, viene creato un nuovo file.'a+': apre il file in modalità di append e lettura. Se il file esiste, Python si posiziona dopo il testo esistente. Se il file non esiste, viene creato un nuovo file.
Gli attributi di un oggetto file forniscono informazioni sul file:
variable.name: restituisce il percorso e il nome del file.variable.mode: restituisce la modalità di apertura del file.variable.closed: restituisce True o False, a seconda che il file sia chiuso o aperto.
.read(size): legge il file dalla posizione corrente alla fine. Se size (opzionale) legge numero byte..readline(size): legge il contenuto di una riga di testo, anche qui size è opzionale..readlines(size): lista legge il contenuto di tutte le righe di testo fino alla fine del file e da una che ha per elementi le singole righe..seek(offset,[whence]): permette di spostare il puntatore alla posizione desiderata, specificando di quanti byte (offset) mi devo muovere. Whence 0 = inizio; 1 = posizione corrente; 2 = fine file..tell: dice la posizione nel testo in termini di byte a partire dall'inizio (conta spazi e /).
.writable(): True se posso scrivere sul file, False se non posso..write(string): scrive nel file il contenuto inserito nell'argomento string (anche eventuali /). Alla fine, numero caratteri scritti e puntatore si posiziona alla fine del testo..writelines(lines): scrive nel file la sequenza di righe.specificate nell'argomento lines (anche /). OGGETTI:- Metodi: azioni che oggetti di una classe possono compiere.
- Attributi: caratteristiche della classe che servono a personalizzare singoli oggetti della classe. Possono essere built-in di Python o altri oggetti. Posso definirli direttamente nella classe, ma conviene usare
__init__(dentro__init__selfè obbligatorio).
- Incapsulamento: caratteristica che non rende visibili agli altri oggetti le caratteristiche di una classe.
- Ereditarietà: da parentclass, creo una childclass che eredita metodi e attributi, alla classe posso comunque aggiungerne di nuovi.
- Polimorfismo: meccanismo con cui si dà lo stesso nome a metodi che agiscono su oggetti diversi. Caratteristica che consente al programma di decidere in che modo utilizzare una
determinata funzione o metodo, a seconda del tipo di dato che ha davanti.
Classe: insieme delle caratteristiche che può assumere un determinato tipo di oggetto, costituita da attributi e metodi. (es. lista è una classe). Tutte derivano da classe object.
L'istanza invece è il singolo oggetto appartenente alla classe (creare variabile = creare istanza).
Esistono classi già presenti nella libreria standard, ma se voglio crearne una nuova o far vedere che ne sto usando una la metto con la lettera maiuscola.
Creazione di una classe:
Per crearne una devo assegnarle un nome + metodi e attributi.
class Nome():def __init__(self):self.attributo1 = valore1...
def metodo1(self, argomentiObbligatori, argomentiOpzionali = "x"):"istruzione 1"...
Dentro init scrivo gli attributi di istanza. Gli attributi di classe posso scriverli direttamente dopo
class Nome():attributo1 = valore 1 etc...Posso mettere tutti gli attributi, metodi ed istruzioni
che voglio. Tutte le istanze di una classe ereditano gli attributi ed i metodi della classe. Gli attributi ereditati dalle singole istanze possono essere assegnati in fase di creazione dell'istanza e/o modificati in un secondo momento.
Creazione istanza: nome = classe(attributi)
Posso fare in due modi, o metto tutti gli attributi (obbligatorio per forza) e separati da una virgola anche gli altri. Oppure creo l'istanza con parametro obbligatorio e poi faccio nome.attributo = ...