python file handling tutorial
Intenzivní pohled na operace zpracování souborů v Pythonu s praktickými příklady:
V sérii Výukový program pro Python pro začátečníky , jsme se dozvěděli více o Funkce řetězce Python v našem posledním tutoriálu.
Python nám poskytuje důležitou funkci pro čtení dat ze souboru a zápis dat do souboru.
Většinou jsou v programovacích jazycích všechny hodnoty nebo data uloženy v některých proměnných, které jsou nestálé povahy.
Protože data budou do těchto proměnných ukládána pouze za běhu a budou ztracena, jakmile bude dokončeno provádění programu. Proto je lepší ukládat tato data trvale pomocí souborů.
Co se naučíte:
- Jak Python zpracovává soubory?
- Typy souborů v Pythonu
- Operace zpracování souborů v Pythonu
- Kódování do souborů
- Zápis a čtení dat z binárního souboru
- Atributy I / O souboru
- Metody souborů Pythonu
- souhrn
- Doporučené čtení
Jak Python zpracovává soubory ?
Pokud pracujete ve velké softwarové aplikaci, kde zpracovávají velké množství dat, nemůžeme očekávat, že tato data budou uložena v proměnné, protože proměnné jsou nestálé povahy.
Kdy se tedy chystáte takové situace řešit, do obrazu se dostane role souborů.
Vzhledem k tomu, že soubory mají nestálou povahu, budou data trvale uložena na sekundárním zařízení, jako je pevný disk, a pomocí pythonu budeme tyto soubory zpracovávat v našich aplikacích.
Přemýšlíte o tom, jak bude python zacházet se soubory?
Pojďme Příklad o tom, jak normální lidé budou zacházet se soubory. Pokud chceme načíst data ze souboru nebo je zapsat do souboru, nejdříve jej otevřete nebo vytvoříme nový soubor, pokud soubor neexistuje, a poté provedeme normální operace čtení / zápisu , uložte soubor a zavřete jej.
Podobně děláme stejné operace v pythonu pomocí některých vestavěných metod nebo funkcí.
Typy souborů v Pythonu
V Pythonu existují dva typy souborů a každý z nich je níže vysvětlen podrobně s příklady pro snadné pochopení.
Oni jsou:
- Binární soubor
- Textový soubor
Binární soubory v Pythonu
Většina souborů, které vidíme v našem počítačovém systému, se nazývá binární soubory.
Příklad:
- Soubory dokumentů: .pdf, .doc, .xls atd.
- Soubory obrázků: .png, .jpg, .gif, .bmp atd.
- Video soubory: .mp4, .3gp, .mkv, .avi atd.
- Zvukové soubory: .mp3, .wav, .mka, .aac atd.
- Soubory databáze: .mdb, .accde, .frm, .sqlite atd.
- Archivovat soubory: .zip, .rar, .iso, .7z atd.
- Spustitelné soubory: .exe, .dll, .class atd.
Doporučené čtení = >> Jak otevřít soubor .7z
Všechny binární soubory mají určitý formát. Některé binární soubory můžeme otevřít v běžném textovém editoru, ale nemůžeme přečíst obsah obsažený v souboru. Je to proto, že všechny binární soubory budou kódovány v binárním formátu, kterému porozumí pouze počítač nebo stroj.
Pro manipulaci s takovými binárními soubory potřebujeme k jejich otevření konkrétní typ softwaru.
Například, K otevření binárních souborů .doc potřebujete software Microsoft Word. Stejně tak potřebujete software pro čtení PDF k otevření binárních souborů .pdf a potřebujete software pro úpravu fotografií ke čtení obrazových souborů atd.
Textové soubory v Pythonu
Textové soubory nemají žádné konkrétní kódování a lze je otevřít v samotném běžném textovém editoru.
Příklad:
- Webové standardy: html, XML, CSS, JSON atd.
- Zdrojový kód: c, aplikace, js, py, java atd.
- Dokumenty: txt, tex, RTF atd.
- Tabulkové údaje: CSV, TSV atd.
- Konfigurace: ini, cfg, reg atd.
V tomto kurzu uvidíme, jak zacházet s textovými i binárními soubory s některými klasickými příklady.
Operace zpracování souborů v Pythonu
Nejdůležitější je, že existují 4 typy operací, se kterými může Python pracovat na souborech:
- Otevřeno
- Číst
- Psát si
- Zavřít
Mezi další operace patří:
- Přejmenovat
- Vymazat
Python Vytvoření a otevření souboru
Python má vestavěnou funkci nazvanou open () pro otevření souboru.
Trvá minimálně jeden argument, jak je uvedeno v následující syntaxi. Metoda open vrací objekt souboru, který se používá pro přístup k metodám zápisu, čtení a dalším vestavěným metodám.
Syntax:
file_object = open(file_name, mode)
Zde file_name je název souboru nebo umístění souboru, který chcete otevřít, a file_name by měl mít také příponu souboru. Což znamená v test.txt - termín test je název souboru a .txt je přípona souboru.
Režim v syntaxi otevřené funkce řekne Pythonu, jakou operaci chcete v souboru provést.
- „R“ - režim čtení: Režim čtení se používá pouze ke čtení dat ze souboru.
- „W“ - režim zápisu: Tento režim se používá, když chcete zapsat data do souboru nebo jej upravit. Pamatujte, že režim zápisu přepíše data obsažená v souboru.
- „A“ - Režim připojení: Režim připojení se používá k připojení dat do souboru. Pamatujte, že data budou připojena na konec ukazatele souboru.
- „R +“ - režim čtení nebo zápisu: Tento režim se používá, když chceme zapisovat nebo číst data ze stejného souboru.
- „A +“ - režim připojení nebo čtení: Tento režim se používá, když chceme číst data ze souboru nebo je připojit do stejného souboru.
Poznámka: Výše uvedené režimy jsou pouze pro otevírání, čtení nebo zápis textových souborů.
Při používání binárních souborů musíme používat stejné režimy s písmenem 'B' na konci. Aby Python pochopil, že interagujeme s binárními soubory.
- 'Wb' - Otevřete soubor pro režim pouze pro zápis v binárním formátu.
- „Rb“ - Otevřete soubor pro režim jen pro čtení v binárním formátu.
- 'Z' - Otevřete soubor pro připojení pouze režimu v binárním formátu.
- „Rb +“ - Otevřete soubor pro režim pouze pro čtení a zápis v binárním formátu.
- „Od +“ - Otevřete soubor pro připojení a režim jen pro čtení v binárním formátu.
Příklad 1:
fo = open(“C:/Documents/Python/test.txt”, “r+”)
Ve výše uvedeném příkladu otevíráme soubor s názvem „test.txt“ přítomný v umístění „C: / Documents / Python /“ a otevíráme stejný soubor v režimu čtení a zápisu, což nám dává větší flexibilitu.
Příklad 2:
fo = open(“C:/Documents/Python/img.bmp”, “rb+”)
Ve výše uvedeném příkladu otevíráme soubor s názvem „img.bmp“ přítomný v umístění „C: / Documents / Python /“, ale zde se pokoušíme otevřít binární soubor.
Python načtený ze souboru
Abychom mohli číst soubor v pythonu, musíme jej otevřít v režimu čtení.
Existují tři způsoby, jak můžeme číst soubory v pythonu.
- číst ([n])
- readline ([n])
- readlines ()
Zde n je počet bajtů, které se mají číst.
Nejprve si vytvořme ukázkový textový soubor, jak je znázorněno níže.
Nyní se podívejme, co jednotlivé metody čtení dělají:
Příklad 1:
my_file = open(“C:/Documents/Python/test.txt”, “r”) print(my_file.read(5))
Výstup:
Ahoj
Zde otevíráme soubor test.txt v režimu jen pro čtení a čteme pouze prvních 5 znaků souboru pomocí metody my_file.read (5).
Výstup:
Příklad 2:
převést youtube na mp3 déle než 20 minut
my_file = open(“C:/Documents/Python/test.txt”, “r”) print(my_file.read())
Výstup:
Ahoj světe
Ahoj Pythone
Dobré ráno
Tady jsme neposkytli žádný argument uvnitř funkce read (). Proto přečte veškerý obsah obsažený v souboru.
Výstup:
Příklad 3:
my_file = open(“C:/Documents/Python/test.txt”, “r”) print(my_file.readline(2))
Výstup:
On
Tato funkce vrací první 2 znaky dalšího řádku.
Výstup:
Příklad 4:
my_file = open(“C:/Documents/Python/test.txt”, “r”) print(my_file.readline())
Výstup:
Ahoj světe
Pomocí této funkce můžeme číst obsah souboru po řádcích.
Výstup:
Příklad 5:
my_file = open(“C:/Documents/Python/test.txt”, “r”) print(my_file.readlines())
Výstup:
[„Hello World n“, „Hello Python n“, „Good Morning“]
Zde čteme všechny řádky přítomné uvnitř textového souboru, včetně znaků nového řádku.
Výstup:
Nyní se podívejme na některé praktičtější příklady čtení souboru.
Čtení konkrétního řádku ze souboru
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
Výstup:
Jak se máte
Ve výše uvedeném příkladu se snažíme číst pouze 4thřádek ze souboru „test.txt“ pomocí a „Pro smyčku“ .
Výstup:
Čtení celého souboru najednou
filename = “C:/Documents/Python/test.txt” filehandle = open(filename, ‘r’) filedata = filehandle.read() print(filedata)
Výstup:
Ahoj světe
Ahoj Pythone
Dobré ráno
Jak se máte
Výstup:
Python zápis do souboru
Abychom mohli zapisovat data do souboru, musíme soubor otevřít v režimu zápisu.
Při zápisu dat do souboru musíme být velmi opatrní, protože přepisuje obsah přítomný uvnitř souboru, který píšete, a všechna předchozí data budou vymazána.
Máme dva způsoby zápisu dat do souboru, jak je znázorněno níže.
- zápis (řetězec)
- spisy (seznam)
Příklad 1:
my_file = open(“C:/Documents/Python/test.txt”, “w”) my_file.write(“Hello World”)
Výše uvedený kód zapíše řetězec „Hello World“ do souboru „test.txt“.
Před zápisem dat do souboru test.txt:
Výstup:
Příklad 2:
my_file = open(“C:/Documents/Python/test.txt”, “w”) my_file.write(“Hello World
”) my_file.write(“Hello Python”)
První řádek bude „Hello World“ a jak jsme již zmínili n znak, kurzor se přesune na další řádek souboru a poté napíše „Hello Python“.
technické dotazy a odpovědi na technické dotazy
Pamatujte, že pokud nezmiňujeme znak n, budou data nepřetržitě zapisována do textového souboru jako „Hello WorldHelloPython“
Výstup:
Příklad 3:
fruits = [“Apple
”, “Orange
”, “Grapes
”, “Watermelon”] my_file = open(“C:/Documents/Python/test.txt”, “w”) my_file.writelines(fruits)
Výše uvedený kód píše a seznam údajů do souboru „test.txt“ současně.
Výstup:
Python připojit do souboru
Chcete-li připojit data do souboru, musíme soubor otevřít v režimu „a +“, abychom měli přístup jak do režimu přidání, tak do režimu zápisu.
Příklad 1:
my_file = open(“C:/Documents/Python/test.txt”, “a+”) my_file.write (“Strawberry”)
Výše uvedený kód připojuje řetězec „Apple“ na konec souboru „test.txt“.
Výstup:
Příklad 2:
my_file = open(“C:/Documents/Python/test.txt”, “a+”) my_file.write (“
Guava”)
Výše uvedený kód připojí řetězec „Apple“ na konec souboru „test.txt“ v novém řádku .
Výstup:
Příklad 3:
fruits = [“
Banana”, “
Avocado”, “
Figs”, “
Mango”] my_file = open(“C:/Documents/Python/test.txt”, “a+”) my_file.writelines(fruits)
Výše uvedený kód připojí seznam dat do souboru „test.txt“.
Výstup:
Příklad 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)
Ve výše uvedeném kódu připojujeme seznam dat do souboru „test.txt“. Zde můžete pozorovat, že jsme použili metodu tell (), která vytiskne místo, kde je kurzor aktuálně.
hledat (offset): Posun trvá tři typy argumentů, jmenovitě 0,1 a 2.
Když je offset 0: Na odkaz bude odkazováno na začátku souboru.
Když je offset 1: Odkaz bude namířen na aktuální pozici kurzoru.
Když je offset 2: Odkaz bude nasměrován na konec souboru.
Výstup:
Python Zavřít soubor
Abychom mohli soubor zavřít, musíme jej nejprve otevřít. V pythonu máme vestavěnou metodu nazvanou close () pro zavření souboru, který je otevřen.
Kdykoli otevřete soubor, je důležité jej zavřít, zejména pomocí metody zápisu. Protože pokud po metodě write nebudeme volat funkci close, pak se do souboru neuloží jakákoli data, která jsme do souboru zapsali.
Příklad 1:
my_file = open(“C:/Documents/Python/test.txt”, “r”) print(my_file.read()) my_file.close()
Příklad 2:
my_file = open(“C:/Documents/Python/test.txt”, “w”) my_file.write(“Hello World”) my_file.close()
Přejmenování nebo smazání souboru v Pythonu
Python nám poskytuje modul „os“, který obsahuje některé vestavěné metody, které nám pomáhají při provádění operací se soubory, jako je přejmenování a odstranění souboru.
Abychom mohli tento modul používat, musíme nejprve importovat modul „os“ do našeho programu a poté zavolat související metody.
metoda přejmenování ():
Tato metoda rename () přijímá dva argumenty, tj. Aktuální název souboru a nový název souboru.
Syntax:
os.rename(current_file_name, new_file_name)
Příklad 1:
import os os.rename(“test.txt”, “test1.txt”)
Zde je aktuální název souboru „test.txt“ a nový název souboru „test1.txt“.
Můžete určit umístění, jak je uvedeno v následujícím příkladu.
Příklad 2:
import os os.rename(“C:/Documents/Python/test.txt”, “C:/Documents/Python/test1.txt”)
Před přejmenováním souboru:
Po provedení výše uvedeného programu
metoda remove ():
K odstranění souboru používáme metodu remove () zadáním názvu souboru nebo umístění souboru, který chcete odstranit.
Syntax:
os.remove(file_name)
Příklad 1:
import os os.remove(“test.txt”)
Zde je soubor „test.txt“, který chcete odebrat.
Podobně můžeme předat umístění souboru také argumentům, jak je znázorněno v následujícím příkladu
Příklad 2:
import os os.remove(“C:/Documents/Python/test.txt”)
Kódování do souborů
Kódování souborů představuje převod znaků do konkrétního formátu, kterému rozumí pouze stroj.
Různé stroje mají odlišný formát kódování, jak je uvedeno níže.
- Microsoft Windows OS používá „Cp1252“ formát kódování ve výchozím nastavení.
- Používá operační systém Linux nebo Unix „Utf-8“ formát kódování ve výchozím nastavení.
- Apple MAC OS používá „Utf-8“ nebo „utf-16“ formát kódování ve výchozím nastavení.
Podívejme se na operaci kódování s několika příklady.
Příklad 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()
Výstup:
Formát kódování Microsoft Windows je ve výchozím nastavení cp1252.
Zde jsem provedl svůj program na počítači se systémem Windows, takže vytiskl výchozí kódování jako „cp1252“.
Výstup:
Můžeme také změnit formát kódování souboru tak, že jej předáme jako argumenty otevřené funkci.
Příklad 2:
my_file = open(“C:/Documents/Python/test.txt”, mode=”w”, encoding=”cp437”) print(“File encoding format is:”, my_file.encoding) my_file.close()
Výstup:
Formát kódování souboru je: cp437
Výstup:
Příklad 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()
Výstup:
Formát kódování souboru je: utf-16
Výstup:
Zápis a čtení dat z binárního souboru
Binární soubory ukládají data v binárním formátu (0 a 1), kterému je stroj srozumitelný. Když tedy otevřeme binární soubor v našem stroji, dekóduje data a zobrazí se v čitelném formátu.
Příklad:
# Vytvořme nějaký binární soubor.
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)
Ve výše uvedeném příkladu nejprve vytváříme binární soubor 'Bfile.bin' s přístupem pro čtení a zápis a jakákoli data, která chcete do souboru zadat, musí být před voláním metody zápisu zakódována.
Také tiskneme data bez jejich dekódování, abychom mohli sledovat, jak data přesně vypadají uvnitř souboru, když jsou zakódována, a stejná data také tiskneme jejich dekódováním, aby byla čitelná pro lidi.
Výstup:
sql základní pohovor otázky a odpovědi pdf
Binární data: b’Hello Python ‘
Normální data: Hello Python
Výstup:
Atributy I / O souboru
Atribut | Popis |
---|---|
readlines () | Přečte a vrátí všechny řádky ze souboru |
název | Vrátí název souboru |
Režim | Návratový režim souboru |
Kódování | Vrátí formát kódování souboru |
Zavřeno | Vrátí true, pokud je soubor uzavřen else vrátí false |
Příklad:
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)
Výstup:
Jaký je název souboru? C: /Documents/Python/test.txt
Co je režim souborů? r
Jaký je formát kódování? cp1252
Je soubor uzavřen? Nepravdivé
Je soubor uzavřen? Skutečný
Výstup:
Zkusme několik dalších metod souboru.
Příklad:
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()
Výstup:
Ahoj Pythone
Ahoj světe
Dobré ráno
Je soubor čitelný :? Skutečný
Je soubor zapisovatelný :? Skutečný
Č. Souboru: 3
Výstup:
Metody souborů Pythonu
Funkce | Vysvětlení |
---|---|
otevřeno() | Chcete-li otevřít soubor |
zavřít() | Zavřete otevřený soubor |
Soubor č() | Vrátí celé číslo souboru |
číst (n) | Přečte znaky „n“ ze souboru do konce souboru |
čitelný() | Vrátí hodnotu true, pokud je soubor čitelný |
readline () | Přečíst a vrátit jeden řádek ze souboru |
hledat (offset) | Změňte pozici kurzoru o bajty, jak je určeno posunem |
viditelný () | Vrátí true, pokud soubor podporuje náhodný přístup |
sdělit() | Vrátí aktuální umístění souboru |
zapisovatelný () | Vrátí hodnotu true, pokud je soubor zapisovatelný |
psát si() | Zapíše řetězec dat do souboru |
spisy () | Zapíše seznam dat do souboru |
Podívejme se, o čem jsme zatím diskutovali v end-end programu.
Příklad:
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()
Výstup:
Jaký je název souboru? C: /Documents/Python/test.txt
Jaký je režim souboru? w +
Jaký je formát kódování? cp1252
Velikost souboru je: 192
Pozice kurzoru je na bajtu: 36
Obsah souboru je: Hello Python
Dobré ráno
Ahoj
Data přítomná na aktuálním řádku jsou: Sbohem
Binární data jsou: 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 ′
Normální data jsou: Sbohem
Výstup:
souhrn
Níže je uvedeno několik ukazatelů, které lze shrnout z výše uvedeného tutoriálu:
- Obvykle používáme soubor pro trvalé ukládání dat v sekundárním úložišti, protože má energeticky nezávislou povahu, takže data mohou být použita v budoucnu.
- Někdy můžeme v některých aplikacích chtít číst data z textového nebo binárního souboru, abychom toho dosáhli pomocí vestavěných funkcí v Pythonu, jako jsou metody otevřeného, čtení, zápisu atd.
- Při použití metody zápisu musíte být velmi opatrní, protože všechna data, která do souboru zapíšete, budou přepsána a stará data budou ztracena.
- Aby se zabránilo přepsání dat, je lepší otevřít soubor v režimu zápisu a připojení, aby se data připojila na konec souboru.
- Nezapomeňte, že když otevřete soubor v binárním režimu, nepřijme parametr kódování.
- Přejmenování a odstranění souboru můžete provést pomocí metod přejmenování a odebrání z modulu / balíčku „os“.
Doufáme, že se vám tento informativní tutoriál o zpracování souborů v Pythonu líbil. Náš nadcházející výukový program vysvětlí více o hlavní funkci Pythonu.
Výukový program PREV | DALŠÍ výuka
Doporučené čtení
- Vstup-výstup a soubory v Pythonu (Python Open, Read and Write to File)
- Výukový program Python DateTime s příklady
- Výukový program pro Python pro začátečníky (praktické školení v Pythonu ZDARMA)
- Výukové programy pro zatmění do hloubky pro začátečníky
- Funkce řetězce Python
- Výukový program pro rozdělení řetězce v Pythonu
- Proměnné Pythonu
- Objekty souboru VBScript: CopyFile, DeleteFile, OpenTextFile, čtení a zápis textového souboru