python file handling tutorial
En intensiv titt på Python-filhanteringsoperationer med praktiska exempel:
I serien av Python-handledning för nybörjare , vi lärde oss mer om Python-strängfunktioner i vår senaste handledning.
Python ger oss en viktig funktion för att läsa data från filen och skriva data i en fil.
För det mesta lagras alla värden eller data i programmeringsspråk i vissa variabler som är flyktiga till sin natur.
Eftersom data kommer att lagras i dessa variabler endast under körningstiden och kommer att gå förlorade när programkörningen är klar. Därför är det bättre att spara dessa data permanent med hjälp av filer.
Vad du kommer att lära dig:
- Hur hanterar Python filer?
- Typer av filer i Python
- Python-filhantering
- Kodning i filer
- Skriva och läsa data från en binär fil
- Fil I / O-attribut
- Python-filmetoder
- Sammanfattning
- Rekommenderad läsning
Hur Python hanterar filer ?
Om du arbetar i ett stort program där de bearbetar ett stort antal data kan vi inte förvänta oss att dessa data ska lagras i en variabel eftersom variablerna är flyktiga till sin natur.
Därför när ska du hantera sådana situationer kommer filernas roll att komma in i bilden.
Eftersom filer inte är flyktiga till sin natur kommer data att lagras permanent i en sekundär enhet som hårddisk och med python kommer vi att hantera dessa filer i våra applikationer.
Funderar du på hur python hanterar filer?
Låt oss ta en Exempel hur vanliga människor hanterar filerna. Om vi vill läsa data från en fil eller skriva data i en fil kommer vi först och främst att öppna filen eller skapa en ny fil om filen inte finns och sedan utföra de normala läs- / skrivåtgärderna , spara filen och stäng den.
På samma sätt gör vi samma operationer i python med hjälp av vissa inbyggda metoder eller funktioner.
Typer av filer i Python
Det finns två typer av filer i Python och var och en av dem förklaras i detalj nedan med exempel för att göra det enkelt.
Dom är:
- Binär fil
- Textfil
Binära filer i Python
De flesta av de filer som vi ser i vårt datorsystem kallas binära filer.
Exempel:
- Dokumentfiler: .pdf, .doc, .xls etc.
- Bildfiler: .png, .jpg, .gif, .bmp etc.
- Videofiler: .mp4, .3gp, .mkv, .avi etc.
- Ljudfiler: .mp3, .wav, .mka, .aac etc.
- Databasfiler: .mdb, .accde, .frm, .sqlite etc.
- Arkivera filer: .zip, .rar, .iso, .7z etc.
- Körbara filer: .exe, .dll, .class etc.
Rekommenderad läsning = >> Hur man öppnar .7z-filen
Alla binära filer har ett specifikt format. Vi kan öppna några binära filer i den vanliga textredigeraren men vi kan inte läsa innehållet i filen. Det beror på att alla binära filer kommer att kodas i binärt format, vilket endast kan förstås av en dator eller maskin.
För att hantera sådana binära filer behöver vi en specifik typ av programvara för att öppna den.
Till exempel, Du behöver Microsoft Word-programvara för att öppna .doc-binära filer. På samma sätt behöver du en pdf-läsarprogramvara för att öppna .pdf-binära filer och du behöver en programvara för bildredigerare för att läsa bildfilerna och så vidare.
Textfiler i Python
Textfiler har ingen specifik kodning och den kan öppnas i normal textredigerare.
Exempel:
- Webbstandarder: html, XML, CSS, JSON etc.
- Källkod: c, app, js, py, java etc.
- Dokument: txt, tex, RTF etc.
- Tabelldata: csv, tsv etc.
- Konfiguration: ini, cfg, reg etc.
I denna handledning kommer vi att se hur man hanterar både text och binära filer med några klassiska exempel.
Python-filhantering
Viktigast av allt finns det fyra typer av operationer som kan hanteras av Python på filer:
- Öppen
- Läsa
- Skriva
- Stänga
Andra verksamheter inkluderar:
- Döp om
- Radera
Python Skapa och öppna en fil
Python har en inbyggd funktion som heter open () för att öppna en fil.
Det tar minst ett argument som nämns i syntaxen nedan. Den öppna metoden returnerar ett filobjekt som används för att komma åt skriv-, läs- och andra inbyggda metoder.
Syntax:
file_object = open(file_name, mode)
Här är filnamn namnet på filen eller platsen för filen som du vill öppna, och filnamn bör också ha filtillägget. Vilket betyder i test.txt - termen test är namnet på filen och .txt är filens förlängning.
Läget i den öppna funktionssyntaxen berättar för Python vilken operation du vill göra på en fil.
- ‘R’ - Läsläge: Läsläge används endast för att läsa data från filen.
- ‘W’ - Skrivläge: Detta läge används när du vill skriva in data i filen eller ändra den. Kom ihåg att skrivläget skriver över data som finns i filen.
- 'A' - Lägg till läge: Append-läge används för att lägga till data i filen. Kom ihåg att data läggs till i slutet av filpekaren.
- 'R +' - läs- eller skrivläge: Detta läge används när vi vill skriva eller läsa data från samma fil.
- 'A +' - Lägg till eller läs läge: Detta läge används när vi vill läsa data från filen eller lägga till data i samma fil.
Notera: Ovan nämnda lägen är endast avsedda för att öppna, läsa eller skriva textfiler.
När vi använder binära filer måste vi använda samma lägen med bokstaven 'B' i slutet. Så att Python kan förstå att vi interagerar med binära filer.
- 'Wb' - Öppna en fil för endast skrivläge i binärt format.
- 'Rb' - Öppna en fil för skrivskyddat läge i binärt format.
- 'Från' - Öppna en fil för att endast lägga till läge i binärt format.
- 'Rb +' - Öppna en fil för läs- och skrivläge i binärt format.
- 'Från +' - Öppna en fil för att lägga till och skrivskyddat läge i binärt format.
Exempel 1:
fo = open(“C:/Documents/Python/test.txt”, “r+”)
I exemplet ovan öppnar vi filen med namnet 'test.txt' närvarande på platsen 'C: / Documents / Python /' och vi öppnar samma fil i ett läs- och skrivläge som ger oss mer flexibilitet.
Exempel 2:
fo = open(“C:/Documents/Python/img.bmp”, “rb+”)
I exemplet ovan öppnar vi filen med namnet 'img.bmp' närvarande på platsen 'C: / Documents / Python /', men här försöker vi öppna den binära filen.
Python läst från fil
För att kunna läsa en fil i python måste vi öppna filen i läsläge.
Det finns tre sätt på vilka vi kan läsa filerna i python.
- läs ((n))
- readline ((n))
- readlines ()
Här är n antalet byte som ska läsas.
Låt oss först skapa en exempeltextfil som visas nedan.
Låt oss nu observera vad varje läsmetod gör:
Exempel 1:
my_file = open(“C:/Documents/Python/test.txt”, “r”) print(my_file.read(5))
Produktion:
Hallå
Här öppnar vi filen test.txt i ett skrivskyddat läge och läser endast de första 5 tecknen i filen med metoden my_file.read (5).
Produktion:
Exempel 2:
vad man ska använda för att öppna xml-filer
my_file = open(“C:/Documents/Python/test.txt”, “r”) print(my_file.read())
Produktion:
Hej världen
Hej Python
God morgon
Här har vi inte angett något argument inuti läsfunktionen (). Därför kommer det att läsa allt innehåll som finns i filen.
Produktion:
Exempel 3:
my_file = open(“C:/Documents/Python/test.txt”, “r”) print(my_file.readline(2))
Produktion:
han
Denna funktion returnerar de två första tecknen i nästa rad.
Produktion:
Exempel 4:
my_file = open(“C:/Documents/Python/test.txt”, “r”) print(my_file.readline())
Produktion:
Hej världen
Med den här funktionen kan vi läsa innehållet i filen rad för rad.
Produktion:
Exempel 5:
my_file = open(“C:/Documents/Python/test.txt”, “r”) print(my_file.readlines())
Produktion:
('Hello World n', 'Hello Python n', 'Good Morning')
Här läser vi alla rader som finns i textfilen inklusive de nya linjetecknen.
Produktion:
Låt oss nu se några mer praktiska exempel på att läsa en fil.
Läser en specifik rad från en fil
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
Produktion:
Hur mår du
I exemplet ovan försöker vi bara läsa 4thfrån ”test.txt” -filen med hjälp av en “För slinga” .
Produktion:
Läser hela filen på en gång
filename = “C:/Documents/Python/test.txt” filehandle = open(filename, ‘r’) filedata = filehandle.read() print(filedata)
Produktion:
Hej världen
Hej Python
God morgon
Hur mår du
Produktion:
Python skriv till fil
För att kunna skriva in data i en fil måste vi öppna filen i skrivläge.
Vi måste vara mycket försiktiga när vi skriver in data i filen eftersom den skriver över innehållet som finns i filen som du skriver, och alla tidigare data raderas.
Vi har två metoder för att skriva data i en fil som visas nedan.
- skriv (sträng)
- skrivlinjer (lista)
Exempel 1:
my_file = open(“C:/Documents/Python/test.txt”, “w”) my_file.write(“Hello World”)
Ovanstående kod skriver strängen 'Hello World' i filen 'test.txt'.
Innan du skriver data till en test.txt-fil:
Produktion:
Exempel 2:
my_file = open(“C:/Documents/Python/test.txt”, “w”) my_file.write(“Hello World
”) my_file.write(“Hello Python”)
Den första raden kommer att vara 'Hello World' och som vi har nämnt n tecken flyttar markören till nästa rad i filen och skriver sedan 'Hello Python'.
mp3 gratis nedladdningar för Android-telefoner
Kom ihåg att om vi inte nämner n tecken kommer informationen att skrivas kontinuerligt i textfilen som 'Hello WorldHelloPython'
Produktion:
Exempel 3:
fruits = (“Apple
”, “Orange
”, “Grapes
”, “Watermelon”) my_file = open(“C:/Documents/Python/test.txt”, “w”) my_file.writelines(fruits)
Ovanstående kod skriver a lista över data i 'test.txt'-filen samtidigt.
Produktion:
Python lägg till filen
För att lägga till data i en fil måste vi öppna filen i 'a +' -läge så att vi får tillgång till både tilläggs- och skrivlägen.
Exempel 1:
my_file = open(“C:/Documents/Python/test.txt”, “a+”) my_file.write (“Strawberry”)
Ovanstående kod lägger till strängen 'Apple' vid slutet av filen 'test.txt'.
Produktion:
Exempel 2:
my_file = open(“C:/Documents/Python/test.txt”, “a+”) my_file.write (“
Guava”)
Ovanstående kod lägger till strängen 'Apple' i slutet av 'test.txt' -filen i en ny rad .
Produktion:
Exempel 3:
fruits = (“
Banana”, “
Avocado”, “
Figs”, “
Mango”) my_file = open(“C:/Documents/Python/test.txt”, “a+”) my_file.writelines(fruits)
Ovanstående kod lägger till en lista med data in i en test.txt-fil.
Produktion:
Exempel 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)
I ovanstående kod lägger vi till listan med data i filen 'test.txt'. Här kan du observera att vi har använt tell () -metoden som skriver ut där markören för närvarande är.
sök (offset): Offset tar tre typer av argument, nämligen 0,1 och 2.
När offset är 0: Referens kommer att pekas i början av filen.
När offset är 1: Referens kommer att pekas på aktuell markörposition.
När offset är 2: Referens kommer att pekas i slutet av filen.
Produktion:
Python Stäng fil
För att stänga en fil måste vi först öppna filen. I python har vi en inbyggd metod som heter close () för att stänga filen som öppnas.
När du öppnar en fil är det viktigt att stänga den, särskilt med skrivmetoden. För om vi inte anropar stängningsfunktionen efter skrivmetoden sparas inte alla data vi har skrivit till en fil i filen.
Exempel 1:
my_file = open(“C:/Documents/Python/test.txt”, “r”) print(my_file.read()) my_file.close()
Exempel 2:
my_file = open(“C:/Documents/Python/test.txt”, “w”) my_file.write(“Hello World”) my_file.close()
Python Byt namn eller ta bort fil
Python förser oss med en “os” -modul som har några inbyggda metoder som hjälper oss att utföra filåtgärderna, som att byta namn på och ta bort filen.
För att kunna använda den här modulen måste vi först och främst importera “os” -modulen i vårt program och sedan anropa relaterade metoder.
byt namn på () metod:
Den här namnet () -metoden accepterar två argument, dvs. det aktuella filnamnet och det nya filnamnet.
Syntax:
os.rename(current_file_name, new_file_name)
Exempel 1:
import os os.rename(“test.txt”, “test1.txt”)
Här är 'test.txt' det aktuella filnamnet och 'test1.txt' är det nya filnamnet.
Du kan ange platsen och visas i exemplet nedan.
Exempel 2:
import os os.rename(“C:/Documents/Python/test.txt”, “C:/Documents/Python/test1.txt”)
Innan du byter namn på filen:
Efter att ha kört ovanstående program
ta bort () metod:
Vi använder borttagningsmetoden () för att ta bort filen genom att ange filnamnet eller filplatsen som du vill ta bort.
Syntax:
os.remove(file_name)
Exempel 1:
import os os.remove(“test.txt”)
Här är 'test.txt' filen som du vill ta bort.
På samma sätt kan vi också skicka filplatsen till argumenten som visas i exemplet nedan
Exempel 2:
import os os.remove(“C:/Documents/Python/test.txt”)
Kodning i filer
Filkodning representerar konvertering av tecken till ett specifikt format som endast en maskin kan förstå.
Olika maskiner har olika kodningsformat som visas nedan.
- Microsoft Windows OS använder 'Cp1252' kodningsformat som standard.
- Linux eller Unix OS använder 'Utf-8' kodningsformat som standard.
- Apples MAC OS använder 'Utf-8' eller 'utf-16' kodningsformat som standard.
Låt oss se kodningsoperationen med några exempel.
Exempel 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()
Produktion:
Microsoft Windows-kodningsformat är som standard cp1252.
Här körde jag mitt program på Windows-maskinen, så det har skrivit ut standardkodningen som 'cp1252'.
Produktion:
Vi kan också ändra kodningsformatet för en fil genom att skicka den som argument till den öppna funktionen.
Exempel 2:
my_file = open(“C:/Documents/Python/test.txt”, mode=”w”, encoding=”cp437”) print(“File encoding format is:”, my_file.encoding) my_file.close()
Produktion:
Filkodningsformatet är: cp437
Produktion:
Exempel 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()
Produktion:
Filkodningsformatet är: utf-16
Produktion:
Skriva och läsa data från en binär fil
Binära filer lagrar data i binärt format (0 och 1) vilket är förståeligt för maskinen. Så när vi öppnar den binära filen i vår maskin avkodar den data och visas i ett läsbart format.
Exempel:
# Låt oss skapa en binär fil.
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)
I exemplet ovan skapar vi först en binär fil 'Bfile.bin' med läs- och skrivåtkomst och vilken data du vill ange i filen måste kodas innan du ringer till skrivmetoden.
Vi skriver också ut data utan att avkoda det, så att vi kan observera hur data ser exakt ut i filen när den är kodad och vi skriver också ut samma data genom att avkoda den så att den kan läsas av människor.
Produktion:
Binär data: b'Hello Python '
Normala data: Hej Python
Produktion:
Fil I / O-attribut
Attribut | Beskrivning |
---|---|
readlines () | Läser och returnerar alla rader från filen |
namn | Returnera namnet på filen |
Läge | Återställningsläge för filen |
Kodning | Returnera kodningsformatet för filen |
Stängd | Returnera sant om filen stängs annars returnerar falsk |
Exempel:
webbplatser för att konvertera youtube-videor till mp3
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)
Produktion:
Vad är filnamnet? C: /Documents/Python/test.txt
Vad är filläget? r
Vad är kodningsformatet? cp1252
Är filen stängd? Falsk
Är filen stängd? Sann
Produktion:
Låt oss testa några andra metoder för filen.
Exempel:
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()
Produktion:
Hej Python
Hej världen
God morgon
Är filen läsbar :? Sann
Är fil skrivbar :? Sann
Fil nr: 3
Produktion:
Python-filmetoder
Fungera | Förklaring |
---|---|
öppen() | För att öppna en fil |
stänga() | Stäng en öppen fil |
Ingen fil() | Returnerar filens heltal |
läs (n) | Läser 'n' tecken från filen till slutet av filen |
läsbar() | Returnerar sant om filen är läsbar |
readline () | Läs och returnera en rad från filen |
söka (offset) | Ändra markörens position med byte enligt vad som anges av offset |
sökbar () | Returnerar sant om filen stöder slumpmässig åtkomst |
säga() | Returnerar den aktuella filplatsen |
skrivbar() | Returnerar sant om filen är skrivbar |
skriva() | Skriver en rad data till filen |
skrivlinjer () | Skriver en lista med data till filen |
Låt oss se vad vi har diskuterat hittills i ett slutprogram.
Exempel:
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()
Produktion:
Vad är filnamnet? C: /Documents/Python/test.txt
Vad är filens läge? w +
Vad är kodningsformatet? cp1252
Filens storlek är: 192
Markörpositionen är vid byte: 36
Innehållet i filen är: Hej Python
God morgon
Adjö
Data som finns på den aktuella raden är: Hejdå
Binära data är: 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 ′
Normala data är: Hejdå
Produktion:
Sammanfattning
Nedan finns några tips som kan sammanfattas från ovanstående handledning:
- Vi använder vanligtvis en fil för att lagra data permanent i den sekundära lagringen eftersom den inte är flyktig till sin natur, så att data kan användas i framtiden.
- Ibland i vissa applikationer kanske vi vill läsa data från en textfil eller binär fil, så att vi kan uppnå det med hjälp av de inbyggda funktionerna i Python som öppna, läsa, skriva metoder etc.
- Du måste vara mycket försiktig när du använder skrivmetoden, för vilken data du skriver i filen kommer att skrivas över och de gamla uppgifterna kommer att gå förlorade.
- För att förhindra överskrivning av data är det bättre att öppna en fil i skriv- och läggläge så att data läggs till i slutet av filen.
- Kom ihåg att när du öppnar en fil i binärt läge accepterar den inte kodningsparametern.
- Du kan byta namn på och radera en fil med hjälp av byta namn och ta bort metoder från 'os' -modulen / paketet.
Vi hoppas att du gillade den här informativa handledningen om Python File Handling. Vår kommande handledning kommer att förklara mer om Pythons huvudfunktion.
PREV-handledning | NÄSTA självstudie
Rekommenderad läsning
- Input-Output och filer i Python (Python Öppna, läs och skriv till fil)
- Python DateTime-handledning med exempel
- Python-handledning för nybörjare (praktisk Python-träning)
- Fördjupade förklaringar om förmörkelser för nybörjare
- Python-strängfunktioner
- Python String Split Tutorial
- Python-variabler
- VBScript-filobjekt: CopyFile, DeleteFile, OpenTextFile, Läs och skriv textfil