vuoi
o PayPal
tutte le volte che vuoi
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 = ...