python file handling tutorial
Una mirada intensiva a les operacions de manipulació de fitxers Python amb exemples pràctics:
A la sèrie de Tutorial de Python per a principiants , en vam aprendre més Funcions de cadena de Python al nostre últim tutorial.
Python ens proporciona una característica important per llegir dades del fitxer i escriure dades en un fitxer.
Sobretot, en els llenguatges de programació, tots els valors o dades s’emmagatzemen en algunes variables de naturalesa volàtil.
Com que les dades s’emmagatzemaran en aquestes variables només durant el temps d’execució i es perdran un cop finalitzada l’execució del programa. Per tant, és millor desar aquestes dades permanentment mitjançant fitxers.
Què aprendreu:
- Com gestionen els fitxers Python?
- Tipus de fitxer a Python
- Operacions de manipulació de fitxers Python
- Codificació en fitxers
- Escriptura i lectura de dades d’un fitxer binari
- Atributs d'E / S del fitxer
- Mètodes de fitxer Python
- Resum
- Lectura recomanada
Com gestiona els fitxers Python ?
Si esteu treballant en una gran aplicació de programari on processen un gran nombre de dades, no podem esperar que aquestes dades s’emmagatzemin en una variable, ja que les variables són de naturalesa volàtil.
Per tant, quan esteu a punt de gestionar aquestes situacions, el paper dels fitxers apareixerà a la imatge.
Com que els fitxers no són volàtils, les dades s’emmagatzemaran permanentment en un dispositiu secundari com el disc dur i, mitjançant python, gestionarem aquests fitxers a les nostres aplicacions.
Esteu pensant en com gestionarà els fitxers Python?
Prenem un Exemple de com manejaran els fitxers les persones normals. Si volem llegir les dades d’un fitxer o escriure-les en un fitxer, primer obrirem el fitxer o crearem un fitxer nou si no existeix i després realitzarem les operacions de lectura / escriptura normals , deseu el fitxer i tanqueu-lo.
De la mateixa manera, fem les mateixes operacions a Python utilitzant alguns mètodes o funcions integrats.
Tipus de fitxer a Python
Hi ha dos tipus de fitxers a Python i cadascun d’ells s’explica detalladament a continuació amb exemples per facilitar-ne la comprensió.
Ells són:
- Fitxer binari
- Fitxer de text
Fitxers binaris a Python
La majoria dels fitxers que veiem al nostre sistema informàtic s’anomenen fitxers binaris.
Exemple:
- Fitxers de documents: .pdf, .doc, .xls, etc.
- Fitxers d'imatge: .png, .jpg, .gif, .bmp, etc.
- Fitxers de vídeo: .mp4, .3gp, .mkv, .avi, etc.
- Fitxers d'àudio: .mp3, .wav, .mka, .aac etc.
- Fitxers de base de dades: .mdb, .accde, .frm, .sqlite, etc.
- Arxiu de fitxers: .zip, .rar, .iso, .7z, etc.
- Fitxers executables: .exe, .dll, .class, etc.
Lectura recomanada = >> Com obrir un fitxer .7z
Tots els fitxers binaris segueixen un format específic. Podem obrir alguns fitxers binaris a l’editor de text normal, però no podem llegir el contingut present dins del fitxer. Això es deu al fet que tots els fitxers binaris es codificaran en format binari, que només pot ser entès per un ordinador o una màquina.
Per gestionar aquests fitxers binaris necessitem un tipus de programari específic per obrir-lo.
Per exemple, Necessiteu el programari Microsoft Word per obrir fitxers binaris .doc. De la mateixa manera, necessiteu un programari lector de pdf per obrir fitxers binaris .pdf i necessiteu un programa d’editor de fotos per llegir els fitxers d’imatges, etc.
Fitxers de text a Python
Els fitxers de text no tenen cap codificació específica i es poden obrir a l’editor de text normal.
Exemple:
- Estàndards web: html, XML, CSS, JSON, etc.
- Codi font: c, app, js, py, java, etc.
- Documents: txt, tex, RTF, etc.
- Dades tabulars: csv, tsv etc.
- Configuració: ini, cfg, reg etc.
En aquest tutorial, veurem com gestionar tant fitxers de text com de fitxers binaris amb alguns exemples clàssics.
Operacions de manipulació de fitxers Python
El més important és que hi ha quatre tipus d’operacions que Python pot gestionar en fitxers:
- Obert
- Llegiu
- Escriu
- Tanca
Altres operacions inclouen:
- Canvia el nom
- Suprimeix
Python Crea i obre un fitxer
Python té una funció integrada anomenada open () per obrir un fitxer.
Es necessita un mínim d'un argument tal com s'esmenta a la sintaxi següent. El mètode obert retorna un objecte de fitxer que s’utilitza per accedir als mètodes d’escriptura, lectura i altres mètodes integrats.
Sintaxi:
file_object = open(file_name, mode)
Aquí, nom_fitxer és el nom del fitxer o la ubicació del fitxer que voleu obrir, i nom_fitxer també hauria d'incloure l'extensió de fitxer. El que significa dins test.txt - el terme prova és el nom del fitxer i .txt és l'extensió del fitxer.
El mode de la sintaxi de la funció oberta indicarà a Python quina operació voleu fer en un fitxer.
- 'R': mode de lectura: El mode de lectura només s’utilitza per llegir dades del fitxer.
- 'W' - Mode d'escriptura: Aquest mode s’utilitza quan voleu escriure dades al fitxer o modificar-les. Recordeu que el mode d’escriptura sobreescriu les dades presents al fitxer.
- 'A': mode d'afegir: El mode d'afegir s'utilitza per afegir dades al fitxer. Recordeu que les dades s’afegiran al final del punter del fitxer.
- ‘R +’: mode de lectura o escriptura: Aquest mode s’utilitza quan volem escriure o llegir les dades del mateix fitxer.
- 'A +': mode d'afegir o llegir: Aquest mode s’utilitza quan volem llegir dades del fitxer o afegir-les al mateix fitxer.
Nota: Els modes esmentats només són per obrir, llegir o escriure fitxers de text.
Mentre fem servir fitxers binaris, hem d’utilitzar els mateixos modes amb la lletra 'B' al final. Per tal que Python entengui que estem interactuant amb fitxers binaris.
- 'Wb' - Obriu un fitxer per al mode només d’escriptura en format binari.
- 'Rb' - Obriu un fitxer per al mode de només lectura en format binari.
- 'Des de' - Obriu un fitxer per afegir només el mode en format binari.
- 'Rb +' - Obriu un fitxer per al mode només de lectura i escriptura en format binari.
- 'Des de +' - Obriu un fitxer per afegir i mode de només lectura en format binari.
Exemple 1:
fo = open(“C:/Documents/Python/test.txt”, “r+”)
A l’exemple anterior, obrim el fitxer anomenat ‘test.txt’ que es troba a la ubicació ‘C: / Documents / Python /’ i obrim el mateix fitxer en mode de lectura-escriptura que ens proporciona més flexibilitat.
Exemple 2:
fo = open(“C:/Documents/Python/img.bmp”, “rb+”)
A l’exemple anterior, obrim el fitxer anomenat ‘img.bmp’ a la ubicació “C: / Documents / Python /”, però aquí intentem obrir el fitxer binari.
Llegir Python des d'un fitxer
Per llegir un fitxer en python, hem d'obrir-lo en mode de lectura.
Hi ha tres maneres en què podem llegir els fitxers en python.
- llegir ((n))
- línia de lectura ((n))
- readlines ()
Aquí, n és el nombre de bytes que cal llegir.
En primer lloc, creem un fitxer de text de mostra com es mostra a continuació.
Ara observem què fa cada mètode de lectura:
Exemple 1:
my_file = open(“C:/Documents/Python/test.txt”, “r”) print(my_file.read(5))
Sortida:
Hola
Aquí obrim el fitxer test.txt en mode de només lectura i només llegim els primers 5 caràcters del fitxer mitjançant el mètode my_file.read (5).
Sortida:
Exemple 2:
implementació de la funció hash c ++
my_file = open(“C:/Documents/Python/test.txt”, “r”) print(my_file.read())
Sortida:
Hola món
Hola Python
Bon dia
Aquí no hem proporcionat cap argument dins de la funció read (). Per tant, llegirà tot el contingut present dins del fitxer.
Sortida:
Exemple 3:
my_file = open(“C:/Documents/Python/test.txt”, “r”) print(my_file.readline(2))
Sortida:
Ell
Aquesta funció retorna els 2 primers caràcters de la línia següent.
Sortida:
Exemple 4:
my_file = open(“C:/Documents/Python/test.txt”, “r”) print(my_file.readline())
Sortida:
Hola món
Mitjançant aquesta funció podem llegir el contingut del fitxer línia per línia.
Sortida:
Exemple 5:
my_file = open(“C:/Documents/Python/test.txt”, “r”) print(my_file.readlines())
Sortida:
('Hola món n', 'Hola Python n', 'Bon dia')
Aquí estem llegint totes les línies presents dins del fitxer de text, inclosos els caràcters de línia nova.
Sortida:
Vegem ara alguns exemples més pràctics de lectura d’un fitxer.
Lectura d'una línia específica d'un fitxer
line_number = 4 fo = open(“C:/Documents/Python/test.txt”, ’r’) currentline = 1 for line in fo: if(currentline == line_number): print(line) break currentline = currentline +1
Sortida:
Com estàs
A l'exemple anterior, intentem llegir només el 4thlínia del fitxer ‘test.txt’ mitjançant un fitxer 'Per a bucle' .
Sortida:
Llegir tot el fitxer alhora
filename = “C:/Documents/Python/test.txt” filehandle = open(filename, ‘r’) filedata = filehandle.read() print(filedata)
Sortida:
Hola món
Hola Python
Bon dia
Com estàs
Sortida:
Python Write to File
Per poder escriure dades en un fitxer, hem d'obrir-lo en mode d'escriptura.
Hem de tenir molta precaució mentre escrivim dades al fitxer, ja que sobreescriu el contingut present al fitxer que esteu escrivint i totes les dades anteriors s’esborraran.
Disposem de dos mètodes per escriure dades en un fitxer, tal com es mostra a continuació.
- escriure (cadena)
- escrits (llista)
Exemple 1:
my_file = open(“C:/Documents/Python/test.txt”, “w”) my_file.write(“Hello World”)
El codi anterior escriu la cadena 'Hello World' al fitxer 'test.txt'.
Abans d’escriure dades en un fitxer test.txt:
Sortida:
Exemple 2:
my_file = open(“C:/Documents/Python/test.txt”, “w”) my_file.write(“Hello World
”) my_file.write(“Hello Python”)
La primera línia serà 'Hello World' i, com hem esmentat n caràcter, el cursor es desplaçarà a la següent línia del fitxer i després escriurà 'Hello Python'.
quina és la meva clau de seguretat wifi
Recordeu si no mencionem el caràcter n, les dades s'escriuran contínuament al fitxer de text com 'Hello WorldHelloPython'
Sortida:
Exemple 3:
fruits = (“Apple
”, “Orange
”, “Grapes
”, “Watermelon”) my_file = open(“C:/Documents/Python/test.txt”, “w”) my_file.writelines(fruits)
El codi anterior escriu a llista de dades al fitxer ‘test.txt’ simultàniament.
Sortida:
Python Add to File
Per afegir dades a un fitxer, hem d’obrir el fitxer en mode ‘a +’ de manera que tinguem accés tant a l’apèndix com als modes d’escriptura.
Exemple 1:
my_file = open(“C:/Documents/Python/test.txt”, “a+”) my_file.write (“Strawberry”)
El codi anterior afegeix la cadena 'Apple' al fitxer final del fitxer ‘test.txt’.
Sortida:
Exemple 2:
my_file = open(“C:/Documents/Python/test.txt”, “a+”) my_file.write (“
Guava”)
El codi anterior afegeix la cadena 'Apple' al final del fitxer 'test.txt' en una nova línia .
Sortida:
Exemple 3:
fruits = (“
Banana”, “
Avocado”, “
Figs”, “
Mango”) my_file = open(“C:/Documents/Python/test.txt”, “a+”) my_file.writelines(fruits)
El codi anterior afegeix una llista de dades en un fitxer 'test.txt'.
Sortida:
Exemple 4:
text=('
Hello','
Hi','
Python') my_file=open('C:/Documents/Python/test.txt',mode='a+') my_file.writelines(text) print('where the file cursor is:',my_file.tell()) my_file.seek(0) for line in my_file: print(line)
Al codi anterior, afegim la llista de dades al fitxer 'test.txt'. Aquí podeu observar que hem utilitzat el mètode tell () que imprimeix on es troba actualment el cursor.
cerca (compensació): El desplaçament té tres tipus d'arguments: 0,1 i 2.
Quan el desplaçament és 0: La referència es mostrarà al començament del fitxer.
Quan el desplaçament és 1: La referència s’assenyalarà a la posició actual del cursor.
Quan el desplaçament és 2: Es farà referència al final del fitxer.
Sortida:
Fitxer de tancament de Python
Per tal de tancar un fitxer, primer hem d’obrir-lo. A Python, tenim un mètode integrat anomenat close () per tancar el fitxer que s’obre.
Sempre que obriu un fitxer, és important tancar-lo, sobretot, amb el mètode d’escriptura. Perquè si no anomenem la funció de tancament després del mètode d’escriptura, les dades que hàgim escrit en un fitxer no es desaran al fitxer.
Exemple 1:
my_file = open(“C:/Documents/Python/test.txt”, “r”) print(my_file.read()) my_file.close()
Exemple 2:
my_file = open(“C:/Documents/Python/test.txt”, “w”) my_file.write(“Hello World”) my_file.close()
Python Canvia el nom o suprimeix el fitxer
Python ens proporciona un mòdul 'os' que inclou alguns mètodes integrats que ens ajudaran a realitzar les operacions del fitxer, com ara canviar el nom i suprimir el fitxer.
Per utilitzar aquest mòdul, primer de tot, hem d’importar el mòdul “os” al nostre programa i després trucar als mètodes relacionats.
mètode rename ():
Aquest mètode rename () accepta dos arguments, és a dir, el nom del fitxer actual i el nom del fitxer nou.
Sintaxi:
os.rename(current_file_name, new_file_name)
Exemple 1:
import os os.rename(“test.txt”, “test1.txt”)
Aquí ‘test.txt’ és el nom del fitxer actual i ‘test1.txt’ és el nom del fitxer nou.
Podeu especificar la ubicació, tal com es mostra a l'exemple següent.
Exemple 2:
import os os.rename(“C:/Documents/Python/test.txt”, “C:/Documents/Python/test1.txt”)
Abans de canviar el nom del fitxer:
Després d’executar el programa anterior
mètode remove ():
Utilitzem el mètode remove () per suprimir el fitxer proporcionant el nom del fitxer o la ubicació del fitxer que voleu suprimir.
Sintaxi:
os.remove(file_name)
Exemple 1:
import os os.remove(“test.txt”)
Aquí ‘test.txt’ és el fitxer que voleu eliminar.
De la mateixa manera, també podem passar la ubicació del fitxer als arguments tal com es mostra a l'exemple següent
Exemple 2:
import os os.remove(“C:/Documents/Python/test.txt”)
Codificació en fitxers
La codificació de fitxers representa convertir caràcters en un format específic que només una màquina pot entendre.
Les diferents màquines tenen un format de codificació diferent, tal com es mostra a continuació.
- El sistema operatiu Microsoft Windows utilitza 'Cp1252' format de codificació per defecte.
- Utilitza Linux o Unix OS 'Utf-8' format de codificació per defecte.
- Utilitza el sistema operatiu MAC d’Apple 'Utf-8' o 'utf-16' format de codificació per defecte.
Vegem l’operació de codificació amb alguns exemples.
Exemple 1:
my_file = open(“C:/Documents/Python/test.txt”, mode=”r”) print(“Microsoft Windows encoding format by default is:”, my_file.encoding) my_file.close()
Sortida:
El format de codificació de Microsoft Windows per defecte és cp1252.
Aquí he executat el meu programa a la màquina Windows, de manera que ha imprès la codificació per defecte com a 'cp1252'.
Sortida:
També podem canviar el format de codificació d’un fitxer passant-lo com a arguments a la funció oberta.
Exemple 2:
my_file = open(“C:/Documents/Python/test.txt”, mode=”w”, encoding=”cp437”) print(“File encoding format is:”, my_file.encoding) my_file.close()
Sortida:
El format de codificació del fitxer és: cp437
Sortida:
Exemple 3:
my_file = open(“C:/Documents/Python/test.txt”, mode=”w”, encoding=”utf-16”) print(“File encoding format is:”, my_file.encoding) my_file.close()
Sortida:
El format de codificació del fitxer és: utf-16
Sortida:
Escriptura i lectura de dades d’un fitxer binari
Els fitxers binaris emmagatzemen dades en format binari (0 i 1) que la màquina entén. Per tant, quan obrim el fitxer binari a la nostra màquina, descodifica les dades i es mostra en un format llegible per l’home.
Exemple:
# Creem algun fitxer binari.
my_file = open(“C:/Documents/Python/bfile.bin”, “wb+”) message = “Hello Python” file_encode = message.encode(“ASCII”) my_file.write(file_encode) my_file.seek(0) bdata = my_file.read() print(“Binary Data:”, bdata) ntext = bdata.decode(“ASCII”) print(“Normal data:”, ntext)
En l'exemple anterior, primer estem creant un fitxer binari 'Bfile.bin' amb l'accés de lectura i escriptura i les dades que vulgueu introduir al fitxer s'han de codificar abans de trucar al mètode d'escriptura.
A més, estem imprimint les dades sense descodificar-les, de manera que podem observar com es veuen exactament les dades dins del fitxer quan està codificat i també estem imprimint les mateixes dades descodificant-les perquè els humans puguin llegir-les.
Sortida:
Dades binàries: b’Hello Python
Dades normals: Hello Python
Sortida:
Atributs d'E / S del fitxer
Atribut | Descripció |
---|---|
readlines () | Llegeix i retorna totes les línies del fitxer |
Nom | Torneu el nom del fitxer |
Mode | Mode de retorn del fitxer |
Codificació | Retorna el format de codificació del fitxer |
Tancat | Retorna true si el fitxer tancat en cas contrari torna fals |
Exemple:
my_file = open(“C:/Documents/Python/test.txt”, “a+”) print(“What is the file name? ”, my_file.name) print(“What is the file mode? ”, my_file.mode) print(“What is the encoding format? ”, my_file.encoding) print(“Is File closed? ”, my_file.closed) my_file.close() print(“Is File closed? ”, my_file.closed)
Sortida:
Quin és el nom del fitxer? C: /Documents/Python/test.txt
Quin és el mode de fitxer? r
Quin és el format de codificació? cp1252
El fitxer està tancat? Fals
El fitxer està tancat? És cert
Sortida:
Provem alguns altres mètodes del fitxer.
Exemple:
my_file = open(“C:/Documents/Python/test.txt”, “w+”) my_file.write(“Hello Python
Hello World
Good Morning”) my_file.seek(0) print(my_file.read()) print(“Is file readable: ?”, my_file.readable()) print(“Is file writeable: ?”, my_file.writable()) print(“File no:”, my_file.fileno()) my_file.close()
Sortida:
Hola Python
Hola món
Bon dia
Es pot llegir el fitxer :? És cert
Es pot escriure un fitxer :? És cert
Expedient núm: 3
Sortida:
Mètodes de fitxer Python
Funció | Explicació |
---|---|
open () | Per obrir un fitxer |
Tanca() | Tanqueu un fitxer obert |
fileno () | Retorna un nombre enter del fitxer |
llegir (n) | Llegeix els caràcters 'n' del fitxer fins al final del fitxer |
llegible () | Retorna cert si el fitxer es pot llegir |
readline () | Llegiu i torneu una línia del fitxer |
buscar (compensar) | Canvieu la posició del cursor per bytes tal com s’especifica a l’òfset |
buscable () | Retorna cert si el fitxer admet l'accés aleatori |
dir() | Retorna la ubicació actual del fitxer |
escriptible () | Retorna cert si el fitxer es pot escriure |
write () | Escriu una cadena de dades al fitxer |
writelines () | Escriu una llista de dades al fitxer |
Vegem què hem comentat fins ara en un programa final.
Exemple:
my_file = open('C:/Documents/Python/test.txt', mode='w+') print('What is the file name? ', my_file.name) print('What is the mode of the file? ', my_file.mode) print('What is the encoding format?', my_file.encoding) text = ('Hello Python
', 'Good Morning
', 'Good Bye') my_file.writelines(text) print('Size of the file is:', my_file.__sizeof__()) print('Cursor position is at byte:', my_file.tell()) my_file.seek(0) print('Content of the file is:', my_file.read()) my_file.close() file = open('C:/Documents/Python/test.txt', mode='r') line_number = 3 current_line = 1 data = 0 for line in file: if current_line == line_number: data = line print('Data present at current line is:', data) break current_line = current_line + 1 bin_file = open('C:/Documents/Python/bfile.exe', mode='wb+') message_content = data.encode('utf-32') bin_file.write(message_content) bin_file.seek(0) bdata = bin_file.read() print('Binary Data is:', bdata) ndata = bdata.decode('utf-32') print('Normal Data is:', ndata) file.close() bin_file.close()
Sortida:
Quin és el nom del fitxer? C: /Documents/Python/test.txt
Quin és el mode del fitxer? w +
Quin és el format de codificació? cp1252
La mida del fitxer és: 192
La posició del cursor és en bytes: 36
El contingut del fitxer és: Hello Python
Bon dia
Adéu
Les dades presents a la línia actual són: Good Bye
Les dades binàries són: b ' xff xfe x00 x00G x00 x00 x00o x00 x00 x00o x00 x00 x00d x00 x00 x00 x00 x00 x00B x00 x00 x00y x00 x00 x00e x00 x00 x00 ′
Les dades normals són: Adéu
Sortida:
serveis web reparadors que proven preguntes d’entrevistes
Resum
A continuació, es detallen alguns consells que es poden resumir en el tutorial anterior:
- Normalment fem servir un fitxer per emmagatzemar dades de manera permanent a l’emmagatzematge secundari, ja que és de naturalesa no volàtil, de manera que les dades es puguin utilitzar en el futur.
- De vegades, en algunes aplicacions, és possible que vulguem llegir les dades d’un fitxer de text o binari, de manera que podem aconseguir-les utilitzant les funcions integrades a Python, com ara mètodes d’obertura, lectura, escriptura, etc.
- Heu de tenir molta precaució mentre utilitzeu el mètode d’escriptura, ja que les dades que escriviu al fitxer se sobreescriuran i es perdran les dades antigues.
- Per tal d’evitar la sobreescriptura de dades, és millor obrir un fitxer en mode d’escriptura i afegir, de manera que les dades s’afegiran al final del fitxer.
- Recordeu que quan obriu un fitxer en mode binari no accepta el paràmetre de codificació.
- Podeu canviar el nom i suprimir un fitxer mitjançant el canvi de nom i eliminar mètodes del paquet o mòdul “os”.
Esperem que us hagi agradat aquest tutorial informatiu sobre la gestió de fitxers de Python. El nostre proper tutorial explicarà més sobre la funció principal de Python.
Lectura recomanada
- Entrada-sortida i fitxers a Python (Python Obrir, llegir i escriure al fitxer)
- Tutorial de Python DateTime amb exemples
- Tutorial Python per a principiants (entrenament pràctic GRATU PyT en Python)
- Tutorials Eclipse en profunditat per a principiants
- Funcions de cadena de Python
- Tutorial de Python String Split
- Variables de Python
- Objectes de fitxer VBScript: CopyFile, DeleteFile, OpenTextFile, lectura i escriptura de fitxers de text