Python proporciona funcions integrades per crear, escriure i llegir fitxers. Hi ha dos tipus de fitxers que es poden gestionar en Python, els fitxers de text normals i els fitxers binaris (escrits en llenguatge binari, 0 i 1).
- Fitxers de text: en aquest tipus de fitxer, cada línia de text s'acaba amb un caràcter especial anomenat EOL (Fi de línia), que és el caràcter de línia nova ('
') a Python per defecte. Fitxers binaris: en aquest tipus de fitxers, no hi ha cap terminador per a una línia i les dades s'emmagatzemen després de convertir-les en un llenguatge binari comprensible per la màquina.
Nota: Per saber més sobre el maneig de fitxers clica aquí .
Taula de contingut
Mode d'accés
Els modes d'accés regeixen el tipus d'operacions possibles al 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. El controlador del fitxer és com un cursor, que defineix des d'on s'han de llegir o escriure les dades al fitxer. Els diferents modes d'accés per llegir un fitxer són:
- Només escriptura (‘w’): obre el fitxer per escriure. Per a un fitxer existent, les dades es trunquen i es sobreescriuen. El mànec es col·loca al principi del fitxer. Crea el fitxer si el fitxer no existeix. Escriure i llegir (‘w+’): obre el fitxer per llegir i escriure. Per a un fitxer existent, les dades es trunquen i es sobreescriuen. El mànec es col·loca al principi del fitxer. Només adjuntar ('a'): obre el fitxer per escriure. El fitxer es crea si no existeix. 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.
Nota: Per saber més sobre el mode d'accés clica aquí .
Obrint un fitxer
Es fa mitjançant la funció open(). No cal importar cap mòdul per a aquesta funció. Sintaxi:
comparació de cadenes java
File_object = open(r'File_Name', 'Access_Mode')>
El fitxer hauria d'existir al mateix directori que el fitxer del programa Python, en cas contrari, l'adreça completa del fitxer s'hauria d'escriure al lloc del nom del fitxer. Nota: La r es col·loca abans del nom de fitxer per evitar que els caràcters de la cadena de nom de fitxer siguin tractats com a caràcters especials. Per exemple, si hi ha emp a l'adreça del fitxer, llavors es tracta com el caràcter de tabulació i es genera un error d'adreça no vàlida. La r fa que la cadena sigui en brut, és a dir, indica que la cadena no té cap caràcter especial. La r es pot ignorar si el fitxer es troba al mateix directori i l'adreça no s'està col·locant.
Python 3
# Open function to open the file 'MyFile1.txt'> # (same directory) in read mode and> file1>=> open>('MyFile.txt', 'w')> > # store its reference in the variable file1> # and 'MyFile2.txt' in D:Text in file2> file2>=> open>(r'D:TextMyFile2.txt', 'w>+>')> |
>
>
Aquí, el fitxer1 es crea com a objecte per al meu fitxer1 i el fitxer2 com a objecte per al meu fitxer2.
Tancant un fitxer
La funció close() tanca el fitxer i allibera l'espai de memòria adquirit per aquest fitxer. S'utilitza en el moment en què el fitxer ja no és necessari o si s'ha d'obrir en un mode de fitxer diferent. Sintaxi:
File_object.close()>
Python 3
cadena en java
# Opening and Closing a file 'MyFile.txt'> # for object name file1.> file1>=> open>('MyFile.txt', 'w')> file1.close()> |
>
>
Escriptura a l'arxiu
Hi ha dues maneres d'escriure en un fitxer.
- write() : Insereix la cadena str1 en una sola línia al fitxer de text.
File_object.write(str1)>
- writelines() : per a una llista d'elements de cadena, cada cadena s'insereix al fitxer de text. S'utilitza per inserir diverses cadenes alhora.
File_object.writelines(L) for L = [str1, str2, str3]>
Nota: ' ' es tracta com un caràcter especial de dos bytes. Exemple:
Python 3
# Python program to demonstrate> # writing to file> # Opening a file> file1>=> open>(>'myfile.txt'>,>'w'>)> L>=> ['This>is> Delhi
', 'This>is> Paris
', 'This>is> London
']> s>=> 'Hello
'> # Writing a string to file> file1.write(s)> # Writing multiple strings> # at a time> file1.writelines(L)> # Closing file> file1.close()> # Checking if the data is> # written to file or not> file1>=> open>(>'myfile.txt'>,>'r'>)> print>(file1.read())> file1.close()> |
>
>
Sortida:
Hello This is Delhi This is Paris This is London>
Adjuntant a un fitxer
Quan el fitxer s'obre en mode d'afegir, 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. Vegem l'exemple següent per aclarir la diferència entre el mode d'escriptura i el mode d'adjuntar.
Python 3
mysql llista tots els usuaris
# Python program to illustrate> # Append vs write mode> 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 London Today Output of Readlines after writing Tomorrow>
Amb declaració
with en Python 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. Sintaxi:
with open filename as file:>
Python 3
# Program to show various ways to> # write 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)> # 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>
Nota: per saber més sobre amb declaració, feu clic aquí.
utilitzant per declaració:
passos:
canviar el nom de la carpeta a linux
Per escriure en un fitxer en Python mitjançant una instrucció for, podeu seguir aquests passos:
Obriu el fitxer utilitzant la funció open() amb el mode adequat ('w' per escriure).
Utilitzeu la instrucció for per fer un bucle sobre les dades que voleu escriure al fitxer.
Utilitzeu el mètode write() de l'objecte fitxer per escriure les dades al fitxer.
Tanqueu el fitxer utilitzant el mètode close() de l'objecte fitxer.
En aquest exemple, el fitxer s'obre per escriure utilitzant la instrucció with open('file.txt', 'w') com a f. Les dades a escriure s'emmagatzemen en una llista anomenada dades. La instrucció for s'utilitza per recórrer cada línia de dades de la llista. La instrucció f.write(line + ' ') escriu cada línia de dades al fitxer amb un caràcter de nova línia ( ) al final. Finalment, el fitxer es tanca automàticament quan finalitza el bloc with.
Python 3
# Open the file for writing> with>open>(>'file.txt'>,>'w'>) as f:> ># Define the data to be written> >data>=> [>'This is the first line'>,>'This is the second line'>,>'This is the third line'>]> ># Use a for loop to write each line of data to the file> >for> line>in> data:> >f.write(line>+> '
'>)> ># Optionally, print the data as it is written to the file> >print>(line)> # The file is automatically closed when the 'with' block ends> |
>
>Sortida
This is the first line This is the second line This is the third line>
Enfocament:
El codi obre un fitxer anomenat file.txt en mode d'escriptura mitjançant un bloc with per assegurar-se que el fitxer es tanca correctament quan finalitzi el bloc. Defineix una llista de cadenes anomenades dades que representen les línies que s'han d'escriure al fitxer. A continuació, el codi utilitza un bucle for per iterar a través de cada cadena de dades i escriu cada cadena al fitxer mitjançant el mètode write(). El codi afegeix un caràcter de nova línia a cada cadena per assegurar-se que cada cadena s'escriu en una nova línia del fitxer. El codi imprimeix opcionalment cada cadena a mesura que s'escriu al fitxer.
Complexitat temporal:
Tant el codi original com el codi alternatiu tenen una complexitat temporal de O(n), on n és el nombre de línies que s'han d'escriure al fitxer. Això es deu al fet que tots dos codis han d'iterar a través de cada línia de la llista de dades per escriure-la al fitxer.
Complexitat espacial:
El codi original i el codi alternatiu tenen la mateixa complexitat espacial de O(n), on n és el nombre de línies que s'han d'escriure al fitxer. Això es deu al fet que tots dos codis han de crear una llista de cadenes que representin les línies que s'han d'escriure al fitxer.