Python s'afegeix a un fitxer

En llegir o escriure en un fitxer, el mode d'accés regula el tipus d'operacions possibles en el fitxer obert. Es refereix a com s'utilitzarà el fitxer un cop obert. Aquests modes també defineixen la ubicació del controlador del fitxer al fitxer. La definició d'aquests modes d'accés és la següent:

    Només adjuntar ('a'): obre el fitxer per escriure. Afegiu i llegiu (‘a+’): obriu el fitxer per llegir i escriure.

Quan el fitxer s'obre en mode d'afegir a Python, el mànec es col·loca al final del fitxer. Les dades que s'escriuen s'inseriran al final, després de les dades existents.

Exemple 1: Programa Python per il·lustrar el mode Append vs write.

Python 3




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

Sortida:

Output of Readlines after appending This is Delhi This is Paris This is LondonToday Output of Readlines after writing Tomorrow 

Exemple 2: Afegeix dades d'una línia nova

En l'exemple anterior de maneig de fitxers , es pot veure que les dades no s'afegeixen de la nova línia. Això es pot fer escrivint el caràcter de nova línia ' ' al fitxer.

Python 3




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

Sortida:

Output of Readlines after appending This is Delhi This is Paris This is London TodayTomorrow 

Nota: ' ' es tracta com un caràcter especial de dos bytes.

Exemple 3: Ús de la instrucció With a Python

amb declaració s'utilitza en el maneig d'excepcions per fer que el codi sigui més net i molt més llegible. Simplifica la gestió de recursos comuns com els fluxos de fitxers. A diferència de les implementacions anteriors, no cal cridar a file.close() quan s'utilitza la instrucció with. La declaració amb en si garanteix l'adquisició i l'alliberament adequats dels recursos.

Python 3




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

Sortida:

Hello This is Delhi This is Paris This is London Today 

Nota: Per saber més sobre amb declaració clica aquí .

Utilitzant el mòdul Shuil:

Aquest enfocament utilitza el mètode shutil.copyfileobj() per afegir el contingut d'un altre fitxer (source_file) a 'file.txt'. Això pot ser útil si voleu afegir el contingut d'un fitxer a un altre sense haver de llegir primer el contingut a la memòria.

Enfocament:
El codi utilitza la funció shutil.copyfileobj() per copiar el contingut de l'objecte source_file a un fitxer nou anomenat file.txt. La instrucció with s'utilitza per obrir i tancar automàticament el fitxer, utilitzant l'objecte de fitxer f.

Complexitat temporal:
La complexitat temporal de la funció shutil.copyfileobj() és proporcional a la mida del fitxer que es copia, ja que necessita llegir i escriure cada byte del fitxer. Per tant, la complexitat temporal del codi és O(n), on n és la mida del fitxer_font.

Complexitat espacial:
La complexitat espacial del codi és O(1), ja que no assigna cap memòria addicional més enllà de la necessària per als objectes fitxer source_file i f. La funció shutil.copyfileobj() copia el contingut del fitxer en trossos, de manera que no cal carregar tot el fitxer a la memòria alhora.

En general, el codi té una complexitat temporal lineal i una complexitat espacial constant, on la complexitat temporal és proporcional a la mida del fitxer que s'està copiant.

Python 3




import> shutil> with> open> (> 'file.txt'> ,> 'a'> ) as f:> > shutil.copyfileobj(source_file, f)>