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()> |
>
>
string.replaceall a java
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
què vol dir això xd
# 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
data de javascript
# 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
matriu de bytes a la cadena java
import> shutil> with>open>(>'file.txt'>,>'a'>) as f:> >shutil.copyfileobj(source_file, f)> |
>
>