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