logo

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

matrice Java
>

>