Python fornisce funzioni integrate per creare, scrivere e leggere file. Esistono due tipi di file che possono essere gestiti in Python, normali file di testo e file binari (scritti in linguaggio binario, 0 e 1).
- File di testo: in questo tipo di file, ogni riga di testo termina con un carattere speciale chiamato EOL (End of Line), che è il carattere di nuova riga ('
') in Python per impostazione predefinita. File binari: in questo tipo di file non è presente alcun terminatore per una riga e i dati vengono memorizzati dopo essere stati convertiti in un linguaggio binario comprensibile dalla macchina.
Nota: Per saperne di più sulla gestione dei file clicca qui .
Tabella dei contenuti
Modalità di accesso
Le modalità di accesso governano il tipo di operazioni possibili nel file aperto. Si riferisce a come verrà utilizzato il file una volta aperto. Queste modalità definiscono anche la posizione del File Handle nel file. L'handle del file è come un cursore, che definisce da dove i dati devono essere letti o scritti nel file. Diverse modalità di accesso per la lettura di un file sono:
- Solo scrittura ('w'): apre il file per la scrittura. Per un file esistente, i dati vengono troncati e sovrascritti. La maniglia è posizionata all'inizio del file. Crea il file se il file non esiste. Scrivi e leggi ('w+'): apre il file per leggere e scrivere. Per un file esistente, i dati vengono troncati e sovrascritti. La maniglia è posizionata all'inizio del file. Aggiungi solo ('a'): apre il file per la scrittura. Il file viene creato se non esiste. La maniglia è posizionata alla fine della lima. I dati in fase di scrittura verranno inseriti alla fine, dopo i dati esistenti.
Nota: Per saperne di più sulla modalità di accesso clicca qui .
Apertura di un file
Viene fatto utilizzando la funzione open(). Per questa funzione non è necessario importare alcun modulo. Sintassi:
File_object = open(r'File_Name', 'Access_Mode')>
Il file dovrebbe esistere nella stessa directory del file del programma Python altrimenti, l'indirizzo completo del file dovrebbe essere scritto al posto del nome file. Nota: La r viene posizionata prima del nome file per evitare che i caratteri nella stringa del nome file vengano trattati come caratteri speciali. Ad esempio, se è presente emp nell'indirizzo del file, viene trattato come carattere di tabulazione e viene generato un errore di indirizzo non valido. La r rende la stringa grezza, cioè indica che la stringa è priva di caratteri speciali. La r può essere ignorata se il file si trova nella stessa directory e l'indirizzo non viene inserito.
Python3
# Open function to open the file 'MyFile1.txt'> # (same directory) in read mode and> file1>=> open>('MyFile.txt', 'w')> > # store its reference in the variable file1> # and 'MyFile2.txt' in D:Text in file2> file2>=> open>(r'D:TextMyFile2.txt', 'w>+>')> |
>
>
Qui, file1 viene creato come oggetto per MyFile1 e file2 come oggetto per MyFile2.
Chiusura di un file
La funzione close() chiude il file e libera lo spazio di memoria acquisito da quel file. Viene utilizzato nel momento in cui il file non è più necessario o se deve essere aperto in una modalità file diversa. Sintassi:
File_object.close()>
Python3
# Opening and Closing a file 'MyFile.txt'> # for object name file1.> file1>=> open>('MyFile.txt', 'w')> file1.close()> |
>
>
Scrittura su file
Esistono due modi per scrivere in un file.
- write() : inserisce la stringa str1 in un'unica riga nel file di testo.
File_object.write(str1)>
- writelines() : per un elenco di elementi stringa, ogni stringa viene inserita nel file di testo. Utilizzato per inserire più stringhe contemporaneamente.
File_object.writelines(L) for L = [str1, str2, str3]>
Nota: ' ' viene trattato come un carattere speciale di due byte. Esempio:
Python3
jpa in primavera
# Python program to demonstrate> # writing to file> # Opening a file> file1>=> open>(>'myfile.txt'>,>'w'>)> L>=> ['This>is> Delhi
', 'This>is> Paris
', 'This>is> London
']> s>=> 'Hello
'> # Writing a string to file> file1.write(s)> # Writing multiple strings> # at a time> file1.writelines(L)> # Closing file> file1.close()> # Checking if the data is> # written to file or not> file1>=> open>(>'myfile.txt'>,>'r'>)> print>(file1.read())> file1.close()> |
>
>
Produzione:
Hello This is Delhi This is Paris This is London>
Aggiunta a un file
Quando il file viene aperto in modalità di aggiunta, la maniglia è posizionata alla fine del file. I dati in fase di scrittura verranno inseriti alla fine, dopo i dati esistenti. Vediamo l'esempio seguente per chiarire la differenza tra modalità di scrittura e modalità di aggiunta.
Python3
# Python program to illustrate> # Append vs write mode> file1>=> open>('myfile.txt', 'w')> L>=> ['This>is> Delhi
', 'This>is> Paris
', 'This>is> London
']> file1.writelines(L)> file1.close()> # Append-adds at last> file1>=> open>('myfile.txt', 'a')># append mode> file1.write('Today
')> file1.close()> file1>=> open>('myfile.txt', 'r')> print>('Output of Readlines after appending')> print>(file1.read())> print>()> file1.close()> # Write-Overwrites> file1>=> open>('myfile.txt', 'w')># write mode> file1.write('Tomorrow
')> file1.close()> file1>=> open>('myfile.txt', 'r')> print>('Output of Readlines after writing')> print>(file1.read())> print>()> file1.close()> |
>
>
Produzione:
Output of Readlines after appending This is Delhi This is Paris This is London Today Output of Readlines after writing Tomorrow>
Con dichiarazione
with in Python viene utilizzato nella gestione delle eccezioni per rendere il codice più pulito e molto più leggibile. Semplifica la gestione delle risorse comuni come i flussi di file. A differenza delle implementazioni precedenti, non è necessario chiamare file.close() quando si utilizza with istruzione. L'istruzione with stessa garantisce la corretta acquisizione e rilascio delle risorse. Sintassi:
with open filename as file:>
Python3
# Program to show various ways to> # write data to a file using with statement> L>=> ['This>is> Delhi
', 'This>is> Paris
', 'This>is> London
']> # Writing to file> with>open>('myfile.txt', 'w') as file1:> ># Writing data to a file> >file1.write('Hello
')> >file1.writelines(L)> # Reading from file> with>open>('myfile.txt', 'r>+>') as file1:> ># Reading form a file> >print>(file1.read())> |
>
>
Produzione:
Hello This is Delhi This is Paris This is London>
Nota: per saperne di più sull'istruzione fare clic qui.
utilizzando per la dichiarazione:
passaggi:
Per scrivere su un file in Python utilizzando un'istruzione for, puoi seguire questi passaggi:
Apri il file utilizzando la funzione open() con la modalità appropriata ('w' per la scrittura).
Utilizzare l'istruzione for per eseguire il loop dei dati che si desidera scrivere nel file.
Utilizza il metodo write() dell'oggetto file per scrivere i dati nel file.
Chiudi il file utilizzando il metodo close() dell'oggetto file.
In questo esempio, il file viene aperto in scrittura utilizzando l'istruzione with open('file.txt', 'w') as f. I dati da scrivere vengono memorizzati in un elenco chiamato dati. L'istruzione for viene utilizzata per eseguire il loop su ciascuna riga di dati nell'elenco. L'istruzione f.write(line + ' ') scrive ogni riga di dati nel file con un carattere di nuova riga ( ) alla fine. Infine, il file viene chiuso automaticamente al termine del blocco with.
Python3
# Open the file for writing> with>open>(>'file.txt'>,>'w'>) as f:> ># Define the data to be written> >data>=> [>'This is the first line'>,>'This is the second line'>,>'This is the third line'>]> ># Use a for loop to write each line of data to the file> >for> line>in> data:> >f.write(line>+> '
'>)> ># Optionally, print the data as it is written to the file> >print>(line)> # The file is automatically closed when the 'with' block ends> |
>
>Produzione
This is the first line This is the second line This is the third line>
Approccio:
Il codice apre un file chiamato file.txt in modalità scrittura utilizzando un blocco with per garantire che il file venga chiuso correttamente al termine del blocco. Definisce un elenco di stringhe chiamate dati che rappresentano le righe da scrivere nel file. Il codice utilizza quindi un ciclo for per scorrere ciascuna stringa nei dati e scrive ciascuna stringa nel file utilizzando il metodo write(). Il codice aggiunge un carattere di nuova riga a ciascuna stringa per garantire che ciascuna stringa venga scritta su una nuova riga nel file. Il codice stampa facoltativamente ogni stringa così come viene scritta nel file.
Complessità temporale:
Sia il codice originale che quello alternativo hanno una complessità temporale pari a O(n), dove n è il numero di righe da scrivere nel file. Questo perché entrambi i codici devono scorrere ciascuna riga nell'elenco dei dati per scriverla nel file.
Complessità spaziale:
Il codice originale e il codice alternativo hanno la stessa complessità spaziale di O(n), dove n è il numero di righe da scrivere nel file. Questo perché entrambi i codici necessitano di creare un elenco di stringhe che rappresentano le righe da scrivere nel file.