Python aggiunge a un file
Durante la lettura o la scrittura su un file, la modalità di accesso determina 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. La definizione di queste modalità di accesso è la seguente:
- Aggiungi solo ('a'): apre il file per la scrittura. Aggiungi e leggi ('a+'): apre il file per la lettura e la scrittura.
Quando il file viene aperto in modalità di aggiunta in Python, l'handle è posizionato alla fine del file. I dati in fase di scrittura verranno inseriti alla fine, dopo i dati esistenti.
Esempio 1: Programma Python per illustrare la modalità Aggiungi e Scrivi.
Python3
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 LondonToday Output of Readlines after writing Tomorrow
Esempio 2: Aggiungi dati da una nuova riga
Nell'esempio sopra di gestione dei file , si può vedere che i dati non vengono aggiunti dalla nuova riga. Questo può essere fatto scrivendo il carattere di nuova riga ' ' nel file.
Python3
# Python program to illustrate> # append from new line> file1> => open> (> 'myfile.txt'> ,> 'w'> )> L> => [> 'This is Delhi
'> ,> 'This is Paris
'> ,> 'This is London'> ]> file1.writelines(L)> file1.close()> # Append-adds at last> # append mode> file1> => open> (> 'myfile.txt'> ,> 'a'> )> # writing newline character> file1.write(> '
'> )> file1.write(> 'Today'> )> # without newline character> file1.write(> 'Tomorrow'> )> file1> => open> (> 'myfile.txt'> ,> 'r'> )> print> (> 'Output of Readlines after appending'> )> print> (file1.read())> print> ()> file1.close()> |
Produzione:
Output of Readlines after appending This is Delhi This is Paris This is London TodayTomorrow
Nota: ' ' viene trattato come un carattere speciale di due byte.
Esempio 3: Utilizzo dell'istruzione With in Python
con dichiarazione 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.
Python3
# Program to show various ways to> # append 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)> # Appending to file> with> open> (> 'myfile.txt'> ,> 'a'> ) as file1:> > file1.write(> 'Today'> )> # 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 Today
Nota: Per saperne di più con la dichiarazione clicca qui .
Utilizzando il modulo shutil:
Questo approccio utilizza il metodo shutil.copyfileobj() per aggiungere il contenuto di un altro file (source_file) a 'file.txt'. Ciò può essere utile se si desidera aggiungere il contenuto di un file a un altro senza doverlo prima leggere in memoria.
Approccio:
Il codice utilizza la funzione shutil.copyfileobj() per copiare il contenuto dell'oggetto source_file in un nuovo file chiamato file.txt. L'istruzione with viene utilizzata per aprire e chiudere automaticamente il file, utilizzando l'oggetto file f.
Complessità temporale:
La complessità temporale della funzione shutil.copyfileobj() è proporzionale alla dimensione del file da copiare, poiché deve leggere e scrivere ogni byte del file. Pertanto, la complessità temporale del codice è O(n), dove n è la dimensione del file_sorgente.
Complessità spaziale:
La complessità spaziale del codice è O(1), poiché non alloca memoria aggiuntiva oltre a quella richiesta per gli oggetti file source_file e f. La funzione shutil.copyfileobj() copia il contenuto del file in blocchi, quindi non è necessario caricare l'intero file in memoria in una sola volta.
Nel complesso, il codice ha una complessità temporale lineare e una complessità spaziale costante, dove la complessità temporale è proporzionale alla dimensione del file da copiare.
Python3
import> shutil> with> open> (> 'file.txt'> ,> 'a'> ) as f:> > shutil.copyfileobj(source_file, f)> |