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)>