python file handling tutorial
Intenziven pregled operacij obdelave datotek Python s praktičnimi primeri:
V seriji Vadnica za Python za začetnike , smo izvedeli več o Funkcije niza Python v naši zadnji vadnici.
Python nam ponuja pomembno funkcijo za branje podatkov iz datoteke in zapisovanje podatkov v datoteko.
Večinoma so v programskih jezikih vse vrednosti ali podatki shranjeni v nekaterih spremenljivkah, ki so spremenljive.
Ker se bodo podatki v te spremenljivke shranili samo med izvajanjem in se bodo po zaključku izvajanja programa izgubili. Zato je bolje, da te podatke trajno shranite z uporabo datotek.
Kaj se boste naučili:
- Kako Python obdeluje datoteke?
- Vrste datotek v Pythonu
- Operacije za obdelavo datotek Python
- Kodiranje v datotekah
- Pisanje in branje podatkov iz binarne datoteke
- Datoteka I / O Atributi
- Datotečne metode Python
- Povzetek
- Priporočeno branje
Kako Python obdeluje datoteke ?
Če delate v veliki programski aplikaciji, kjer obdelujejo veliko število podatkov, potem ne moremo pričakovati, da bodo ti podatki shranjeni v spremenljivki, saj so spremenljivke spremenljive.
Kdaj se boste torej lotili takšnih situacij, bo vloga datotek.
Ker so datoteke neobstojne, bodo podatki trajno shranjeni v sekundarni napravi, kot je trdi disk, in z uporabo pythona bomo te datoteke obravnavali v naših aplikacijah.
Ali razmišljate o tem, kako bo python obdeloval datoteke?
Vzemimo Primer kako bodo običajni ljudje ravnali z datotekami. Če želimo podatke prebrati iz datoteke ali jih zapisati v datoteko, bomo najprej odprli datoteko ali ustvarili novo datoteko, če datoteka ne obstaja, in nato izvedli običajne operacije branja / pisanja , shranite datoteko in jo zaprite.
Podobno delamo iste operacije v pythonu z uporabo nekaterih vgrajenih metod ali funkcij.
Vrste datotek v Pythonu
V Pythonu obstajata dve vrsti datotek in vsaka je podrobno razložena spodaj s primeri za lažje razumevanje.
To so:
- Binarna datoteka
- Besedilna datoteka
Binarne datoteke v Pythonu
Večina datotek, ki jih vidimo v našem računalniškem sistemu, se imenuje binarne datoteke.
Primer:
- Datoteke dokumentov: .pdf, .doc, .xls itd.
- Slikovne datoteke: .png, .jpg, .gif, .bmp itd.
- Video datoteke: .mp4, .3gp, .mkv, .avi itd.
- Zvočne datoteke: .mp3, .wav, .mka, .aac itd.
- Datoteke zbirke podatkov: .mdb, .accde, .frm, .sqlite itd.
- Arhivske datoteke: .zip, .rar, .iso, .7z itd.
- Izvršljive datoteke: .exe, .dll, .class itd.
Priporočeno branje = >> Kako odpreti datoteko .7z
Vse binarne datoteke imajo določeno obliko. Nekatere binarne datoteke lahko odpremo v običajnem urejevalniku besedil, vendar ne moremo prebrati vsebine, ki je znotraj datoteke. To je zato, ker bodo vse binarne datoteke kodirane v binarni obliki, ki jo lahko razume le računalnik ali stroj.
Za obdelavo takšnih binarnih datotek potrebujemo posebno vrsto programske opreme, ki jo odpre.
Na primer, Za odpiranje binarnih datotek .doc potrebujete programsko opremo Microsoft Word. Prav tako potrebujete programsko opremo bralnika pdf za odpiranje binarnih datotek .pdf, za branje slikovnih datotek pa potrebujete programsko opremo za urejanje fotografij itd.
Besedilne datoteke v Pythonu
Besedilne datoteke nimajo posebnega kodiranja in jih je mogoče odpreti v običajnem urejevalniku besedil.
Primer:
- Spletni standardi: html, XML, CSS, JSON itd.
- Izvorna koda: c, app, js, py, java itd.
- Dokumenti: txt, tex, RTF itd.
- Tabelarični podatki: csv, tsv itd.
- Konfiguracija: ini, cfg, reg itd.
V tej vadnici bomo z nekaj klasičnimi primeri videli, kako ravnati tako z besedilom kot z binarnimi datotekami.
Operacije za obdelavo datotek Python
Najpomembneje je, da lahko Python v datotekah obravnava 4 vrste operacij:
- Odprto
- Preberite
- Napiši
- Zapri
Druge operacije vključujejo:
- Preimenuj
- Izbriši
Python Ustvari in odpre datoteko
Python ima vgrajeno funkcijo, imenovano open () za odpiranje datoteke.
Potrebuje najmanj en argument, kot je navedeno v spodnji sintaksi. Odprta metoda vrne datotečni objekt, ki se uporablja za dostop do zapisovanja, branja in drugih vgrajenih metod.
Sintaksa:
file_object = open(file_name, mode)
Tu je ime_datoteke ime datoteke ali mesto datoteke, ki jo želite odpreti, in ime_datoteke mora vsebovati tudi pripono datoteke. Kar pomeni v test.txt - izraz test je ime datoteke, .txt pa je pripona datoteke.
Način v sintaksi odprte funkcije bo Pythonu povedal, katero operacijo želite narediti v datoteki.
- „R“ - način branja: Način branja se uporablja samo za branje podatkov iz datoteke.
- „W“ - način pisanja: Ta način se uporablja, če želite zapisati podatke v datoteko ali jo spremeniti. Ne pozabite, da način pisanja prepiše podatke v datoteki.
- „A“ - način dodajanja: Način dodajanja se uporablja za dodajanje podatkov v datoteko. Ne pozabite, da bodo podatki dodani na koncu kazalca datoteke.
- ‘R +’ - način branja ali pisanja: Ta način se uporablja, kadar želimo zapisati ali prebrati podatke iz iste datoteke.
- „A +“ - način dodajanja ali branja: Ta način se uporablja, kadar želimo prebrati podatke iz datoteke ali jih dodati v isto datoteko.
Opomba: Zgoraj omenjeni načini so namenjeni samo odpiranju, branju ali pisanju besedilnih datotek.
Med uporabo binarnih datotek moramo uporabljati enake načine s črko 'B' na koncu. Tako da Python lahko razume, da komuniciramo z binarnimi datotekami.
- 'Wb' - Odprite datoteko za način samo pisanja v binarni obliki.
- „Rb“ - Odprite datoteko za način samo za branje v binarni obliki.
- „Od“ - Odprite datoteko za dodajanje samo načina v binarni obliki.
- „Rb +“ - Odprite datoteko za način samo za branje in pisanje v binarni obliki.
- „Od +“ - Odprite datoteko za dodajanje in način samo za branje v binarni obliki.
Primer 1:
fo = open(“C:/Documents/Python/test.txt”, “r+”)
V zgornjem primeru odpremo datoteko z imenom „test.txt“, ki je prisotna na lokaciji „C: / Documents / Python /“, in isto datoteko odpremo v načinu branja in pisanja, kar nam daje večjo prilagodljivost.
2. primer:
fo = open(“C:/Documents/Python/img.bmp”, “rb+”)
V zgornjem primeru odpiramo datoteko z imenom 'img.bmp', ki je prisotna na lokaciji 'C: / Documents / Python /', vendar tu poskušamo odpreti binarno datoteko.
Python Read From File
Če želimo datoteko prebrati v pythonu, jo moramo odpreti v načinu branja.
Na tri načine lahko beremo datoteke v pythonu.
- beri ([n])
- vrstica za branje ([n])
- bralne vrstice ()
Tu je n število bajtov, ki jih je treba prebrati.
Najprej ustvarimo vzorčno besedilno datoteko, kot je prikazano spodaj.
Zdaj pa poglejmo, kaj počne vsaka metoda branja:
Primer 1:
my_file = open(“C:/Documents/Python/test.txt”, “r”) print(my_file.read(5))
Izhod:
zdravo
Tu odpiramo datoteko test.txt v načinu samo za branje in z metodo my_file.read (5) beremo samo prvih 5 znakov datoteke.
Izhod:
2. primer:
1 nf 2 nf 3 nf
my_file = open(“C:/Documents/Python/test.txt”, “r”) print(my_file.read())
Izhod:
Pozdravljen, svet
Pozdravljeni Python
Dobro jutro
Tu nismo podali nobenega argumenta znotraj funkcije read (). Zato bo prebral vso vsebino v datoteki.
Izhod:
3. primer:
my_file = open(“C:/Documents/Python/test.txt”, “r”) print(my_file.readline(2))
Izhod:
On
Ta funkcija vrne prva dva znaka naslednje vrstice.
Izhod:
Primer 4:
my_file = open(“C:/Documents/Python/test.txt”, “r”) print(my_file.readline())
Izhod:
Pozdravljen, svet
Z uporabo te funkcije lahko beremo vsebino datoteke po vrsticah.
Izhod:
Primer 5:
my_file = open(“C:/Documents/Python/test.txt”, “r”) print(my_file.readlines())
Izhod:
['Pozdravljeni, svet n', 'Pozdravljeni Python n', 'Dobro jutro']
Tu beremo vse vrstice v besedilni datoteki, vključno z znaki nove vrstice.
Izhod:
Zdaj pa si oglejmo še nekaj praktičnih primerov branja datoteke.
Branje določene vrstice iz datoteke
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
Izhod:
Kako si
V zgornjem primeru skušamo brati samo 4thvrstico iz datoteke 'test.txt' z uporabo 'Za zanko' .
Izhod:
Branje celotne datoteke naenkrat
filename = “C:/Documents/Python/test.txt” filehandle = open(filename, ‘r’) filedata = filehandle.read() print(filedata)
Izhod:
Pozdravljen, svet
Pozdravljeni Python
Dobro jutro
Kako si
Izhod:
Python Piši v datoteko
Če želimo podatke zapisati v datoteko, jo moramo odpreti v načinu pisanja.
Pri zapisovanju podatkov v datoteko moramo biti zelo previdni, saj prepiše vsebino v datoteki, ki jo pišete, in vsi prejšnji podatki bodo izbrisani.
Za prikaz podatkov v datoteko imamo dva načina, kot je prikazano spodaj.
- pisanje (niz)
- linije za pisanje (seznam)
Primer 1:
my_file = open(“C:/Documents/Python/test.txt”, “w”) my_file.write(“Hello World”)
Zgornja koda zapiše niz »Hello World« v datoteko »test.txt«.
Pred zapisovanjem podatkov v datoteko test.txt:
Izhod:
2. primer:
my_file = open(“C:/Documents/Python/test.txt”, “w”) my_file.write(“Hello World
”) my_file.write(“Hello Python”)
Prva vrstica bo 'Hello World' in kot smo že omenili znak n, se kazalka premakne v naslednjo vrstico datoteke in nato napiše 'Hello Python'.
pl sql vprašanja za intervju z odgovori
Ne pozabite, da če ne omenimo znaka n, se bodo podatki neprekinjeno zapisovali v besedilno datoteko, kot je 'Hello WorldHelloPython'
Izhod:
3. primer:
fruits = [“Apple
”, “Orange
”, “Grapes
”, “Watermelon”] my_file = open(“C:/Documents/Python/test.txt”, “w”) my_file.writelines(fruits)
Zgornja koda piše a seznam podatkov v datoteko ‘test.txt’ hkrati.
Izhod:
Python Dodaj v datoteko
Če želite podatke dodati datoteki, jo moramo odpreti v načinu '+', tako da bomo imeli dostop tako do načinov dodajanja kot pisanja.
Primer 1:
my_file = open(“C:/Documents/Python/test.txt”, “a+”) my_file.write (“Strawberry”)
Zgornja koda doda niz 'Apple' na konec datoteke ‘test.txt’.
Izhod:
2. primer:
my_file = open(“C:/Documents/Python/test.txt”, “a+”) my_file.write (“
Guava”)
Zgornja koda doda niz 'Apple' na koncu datoteke 'test.txt' v novi vrstici .
Izhod:
3. primer:
fruits = [“
Banana”, “
Avocado”, “
Figs”, “
Mango”] my_file = open(“C:/Documents/Python/test.txt”, “a+”) my_file.writelines(fruits)
Zgornja koda doda seznam podatkov v datoteko ‘test.txt’.
Izhod:
Primer 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)
V zgornji kodi dodajamo seznam podatkov v datoteko ‘test.txt’. Tu lahko opazite, da smo uporabili metodo tell (), ki natisne, kje je trenutno kazalec.
iskanje (odmik): Odmik ima tri vrste argumentov, in sicer 0,1 in 2.
Ko je zamik 0: Sklic bo naveden na začetku datoteke.
Ko je zamik 1: Referenca bo usmerjena na trenutni položaj kazalke.
Ko je odmik 2: Sklic bo naveden na koncu datoteke.
Izhod:
Python Zapri datoteko
Če želite datoteko zapreti, jo moramo najprej odpreti. V pythonu imamo vgrajeno metodo, imenovano close (), s katero zapremo datoteko, ki se odpre.
Kadarkoli odprete datoteko, je pomembno, da jo zaprete, še posebej z metodo pisanja. Ker če po metodi pisanja ne pokličemo funkcije zapiranja, se podatki, ki smo jih zapisali v datoteko, ne shranijo v datoteko.
Primer 1:
my_file = open(“C:/Documents/Python/test.txt”, “r”) print(my_file.read()) my_file.close()
2. primer:
my_file = open(“C:/Documents/Python/test.txt”, “w”) my_file.write(“Hello World”) my_file.close()
Python preimenuje ali izbriši datoteko
Python nam ponuja modul »os«, ki ima nekaj vgrajenih metod, ki bi nam pomagale pri izvajanju operacij datotek, kot je preimenovanje in brisanje datoteke.
Za uporabo tega modula moramo najprej v naš program uvoziti modul »os« in nato poklicati povezane metode.
metoda preimenovanja ():
Ta metoda preimenovanja () sprejema dva argumenta, to je trenutno ime datoteke in novo ime datoteke.
Sintaksa:
os.rename(current_file_name, new_file_name)
Primer 1:
import os os.rename(“test.txt”, “test1.txt”)
Tu je 'test.txt' trenutno ime datoteke, 'test1.txt' pa je novo ime datoteke.
Lokacijo lahko določite tako, kot je prikazano v spodnjem primeru.
2. primer:
import os os.rename(“C:/Documents/Python/test.txt”, “C:/Documents/Python/test1.txt”)
Pred preimenovanjem datoteke:
Po izvedbi zgornjega programa
metoda remove ():
Za brisanje datoteke uporabljamo metodo remove (), tako da vnesemo ime datoteke ali mesto datoteke, ki jo želimo izbrisati.
Sintaksa:
os.remove(file_name)
Primer 1:
import os os.remove(“test.txt”)
Tu je »test.txt« datoteka, ki jo želite odstraniti.
Podobno lahko tudi datoteko prenesemo na argumente, kot je prikazano v spodnjem primeru
2. primer:
import os os.remove(“C:/Documents/Python/test.txt”)
Kodiranje v datotekah
Kodiranje datotek predstavlja pretvorbo znakov v določeno obliko, ki jo lahko razume le naprava.
Različni stroji imajo različno obliko kodiranja, kot je prikazano spodaj.
- Microsoft Windows OS uporablja ‘Cp1252’ privzeto.
- Linux ali Unix OS uporablja „Utf-8“ privzeto.
- Appleov MAC OS uporablja „Utf-8“ ali „utf-16“ privzeto.
Poglejmo postopek kodiranja z nekaj primeri.
Primer 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()
Izhod:
Oblika kodiranja Microsoft Windows je privzeto cp1252.
Tukaj sem izvajal svoj program na Windows računalniku, zato je natisnil privzeto kodiranje kot 'cp1252'.
vprašanja in odgovori za vb scenarij
Izhod:
Obliko kodiranja datoteke lahko spremenimo tudi tako, da jo posredujemo kot argumente v odprto funkcijo.
2. primer:
my_file = open(“C:/Documents/Python/test.txt”, mode=”w”, encoding=”cp437”) print(“File encoding format is:”, my_file.encoding) my_file.close()
Izhod:
Format kodiranja datoteke je: cp437
Izhod:
3. primer:
my_file = open(“C:/Documents/Python/test.txt”, mode=”w”, encoding=”utf-16”) print(“File encoding format is:”, my_file.encoding) my_file.close()
Izhod:
Format kodiranja datoteke je: utf-16
Izhod:
Pisanje in branje podatkov iz binarne datoteke
Binarne datoteke shranjujejo podatke v binarni obliki (0 in 1), kar je naprava razumljiva. Ko torej odpremo binarno datoteko v naši napravi, ta podatke dešifrira in prikaže v človekom berljivi obliki.
Primer:
# Ustvarimo nekaj binarnih datotek.
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)
V zgornjem primeru najprej ustvarimo binarno datoteko 'Bfile.bin' z dostopom za branje in pisanje in vse podatke, ki jih želite vnesti v datoteko, je treba kodirati, preden pokličete metodo pisanja.
Prav tako tiskamo podatke, ne da bi jih dekodirali, da lahko opazujemo, kako natančno izgledajo podatki v datoteki, ko je kodirana, in iste podatke tiskamo tudi tako, da jih dekodiramo, da jih lahko ljudje berejo.
Izhod:
Binarni podatki: b'Hello Python '
Običajni podatki: Pozdravljeni Python
Izhod:
Datoteka I / O Atributi
Atribut | Opis |
---|---|
bralne vrstice () | Prebere in vrne vse vrstice iz datoteke |
Ime | Vrnite ime datoteke |
Način | Vrnitev datoteke |
Kodiranje | Vrnite format kodiranja datoteke |
Zaprto | Vrni true, če je datoteka zaprta, sicer vrne false |
Primer:
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)
Izhod:
Kakšno je ime datoteke? C: /Documents/Python/test.txt
Kaj je datotečni način? r
Kakšna je oblika kodiranja? cp1252
Ali je datoteka zaprta? Lažno
Ali je datoteka zaprta? Prav
Izhod:
Preizkusimo še nekaj drugih načinov datoteke.
Primer:
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()
Izhod:
Pozdravljeni Python
Pozdravljen, svet
Dobro jutro
Ali je datoteka berljiva :? Prav
Ali je datoteko mogoče zapisati :? Prav
Št. Datoteke: 3
Izhod:
Datotečne metode Python
Funkcija | Pojasnilo |
---|---|
odprto() | Odpiranje datoteke |
zapri () | Zaprite odprto datoteko |
fileno () | Vrne celo število datoteke |
beri (n) | Prebere ‘n’ znakov iz datoteke do konca datoteke |
berljivo () | Vrne true, če je datoteka berljiva |
branje () | Preberite in vrnite eno vrstico iz datoteke |
iskati (odmik) | Spremenite položaj kazalca za bajte, kot je določeno z odmikom |
viden () | Vrne true, če datoteka podpira naključni dostop |
povej () | Vrne trenutno lokacijo datoteke |
za pisanje () | Vrne true, če je datoteko mogoče zapisovati |
piši () | V datoteko zapiše niz podatkov |
pisalne črte () | V datoteko zapiše seznam podatkov |
Poglejmo, o čem smo do zdaj razpravljali v končnem programu.
Primer:
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()
Izhod:
Kakšno je ime datoteke? C: /Documents/Python/test.txt
Kakšen je način datoteke? w +
Kakšna je oblika kodiranja? cp1252
Velikost datoteke je: 192
Položaj kazalca je v bajtu: 36
Vsebina datoteke je: Pozdravljeni Python
Dobro jutro
Adijo
Podatki v trenutni vrstici so: Zbogom
Binarni podatki so: 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 '
Običajni podatki so: Adijo
Izhod:
Povzetek
Spodaj je navedenih nekaj napotkov, ki jih lahko povzamemo iz zgornje vadnice:
- Datoteko običajno uporabljamo za trajno shranjevanje podatkov v sekundarnem pomnilniku, saj je po naravi nehlapna, tako da se bodo podatki lahko uporabljali v prihodnosti.
- Včasih bomo v nekaterih aplikacijah morda želeli prebrati podatke iz besedilne datoteke ali binarne datoteke, tako da bomo to lahko dosegli z vgrajenimi funkcijami v Pythonu, kot so metode odprtega, branja, pisanja itd.
- Pri uporabi metode pisanja morate biti zelo previdni, saj bodo vsi podatki, ki jih vpišete v datoteko, prepisani in stari podatki bodo izgubljeni.
- Da bi preprečili prepisovanje podatkov, je bolje, da datoteko odprete v načinu pisanja in dodajanja, tako da bodo podatki dodani na koncu datoteke.
- Ne pozabite, da ko datoteko odprete v binarnem načinu, ne sprejme parametra kodiranja.
- Izvedete lahko preimenovanje in brisanje datoteke s preimenovanjem in odstranite metode iz modula / paketa “os”.
Upamo, da vam je bila všeč ta informativna vadnica o obdelavi datotek Python. Naša prihajajoča vadnica bo razložila več o glavni funkciji Pythona.
PREV Vadnica | NASLEDNJA Vadnica
Priporočeno branje
- Vhodno-izhodni podatki in datoteke v Pythonu (odpiranje, branje in pisanje v datoteko Python)
- Vadnica Python DateTime s primeri
- Vadnica za Python za začetnike (praktično BREZPLAČNO usposabljanje za Python)
- Vadnice za globinsko zasenčenje za začetnike
- Funkcije niza Python
- Vadnica za delitev nizov Python
- Python spremenljivke
- Predmeti datoteke VBScript: CopyFile, DeleteFile, OpenTextFile, branje in pisanje besedilne datoteke