Úvod
Práce se soubory je nedílnou součástí programování. Manipulace se soubory v Pythonu je zjednodušena pomocí vestavěných metod, které zahrnují vytváření, otevírání a zavírání souborů.
Zatímco jsou soubory otevřené, Python navíc umožňuje provádět různé operace se soubory, jako je čtení, zápis a přidávání informací.
Tento článek vás naučí, jak pracovat se soubory v Pythonu.
Předpoklady
- Python 3 nainstalován a nastaven.
- IDE nebo editor kódu pro psaní kódu.
- Přístup k terminálu pro spuštění kódu (nebo spuštění přímo v IDE).
- Textový soubor pro příklady.
Otevírání souborů v Pythonu
open() Metoda Pythonu je primární funkcí zpracování souborů. Základní syntaxe je:
file_object = open('file_name', 'mode')
open() funkce přebírá dva základní parametry pro práci se soubory:
1. file_name obsahuje příponu souboru a předpokládá, že soubor je v aktuálním pracovním adresáři. Pokud je umístění souboru jinde, uveďte absolutní nebo relativní cestu.
2. mode je volitelný parametr, který definuje způsob otevírání souboru. Níže uvedená tabulka uvádí různé možné možnosti:
| Režim | Popis |
|---|---|
'r' | Čte ze souboru a vrátí chybu, pokud soubor neexistuje (výchozí ). |
'w' | Zapíše do souboru a vytvoří soubor, pokud neexistuje, nebo přepíše existující soubor. |
'x' | Exkluzivní vytvoření, které se nezdaří, pokud soubor již existuje. |
'a' | Připojí k souboru a vytvoří soubor, pokud neexistuje, nebo přepíše existující soubor. |
'b' | Binární režim. Tento režim použijte pro netextové soubory, jako jsou obrázky. |
't' | Textový režim. Použít pouze pro textové soubory (výchozí ). |
'+' | Aktivuje metody čtení a zápisu. |
Režim musí mít přesně jedno vytvoření (x )/read(r )/write(w )/append(a ), maximálně jeden + . Výchozí režim vynechání je 'rt' pro čtení textových souborů.
Níže je tabulka popisující, jak se každý z režimů chová při vyvolání.
| Chování | Režimy |
|---|---|
| Přečíst | r , r+ , w+ , a+ , x+ |
| Psát | r+ , w , w+ , a , a+ , x+ |
| Vytvořit | w , w+ , a , a+ , x , x+ |
| Začátek pozice ukazatele | r , r+ , w , w+ , x , x+ |
| Konec pozice ukazatele | a , a+ |
| Zkrátit (vymazat obsah) | w , w+ |
| Musí existovat | r , r+ |
| Nesmí existovat | x , x+ |
Režim čtení
Režim čtení v Pythonu otevře existující soubor pro čtení a umístí ukazatel na začátek souboru.
Chcete-li číst textový soubor v Pythonu, načtěte soubor pomocí open() funkce:
f = open("<file name>")
Výchozí režim pro čtení textu ('rt' ). Proto je následující metoda ekvivalentní výchozí:
f = open("<file name>", "rt") Chcete-li číst soubory v binárním režimu, použijte:
f = open("<file name>", "rb")
Přidejte + pro otevření souboru v režimu čtení a zápisu:
f = open("<file name>", "r+") # Textual read and write f = open("<file name>", "rt+") # Same as above f = open("<file name>", "rb+") # Binary read and write Ve všech případech funkce vrací objekt souboru a vlastnosti závisí na zvoleném režimu.
Režim zápisu
Režim zápisu vytvoří soubor pro zápis obsahu a umístí ukazatel na začátek. Pokud soubor existuje, zápis zkrátí (vymaže) všechny existující informace.
Upozornění: Režim zápisu smaže stávající obsah okamžitě . Před náhodným přepsáním informací zkontrolujte, zda soubor existuje.
Chcete-li otevřít soubor pro zápis informací, použijte:
f = open("<file name>", "w") Výchozí režim je text, takže následující řádek je ekvivalentní výchozímu:
f = open("<file name>", "wt") Chcete-li zapisovat v binárním režimu, otevřete soubor pomocí:
f = open("<file name>", "wb")
Přidejte + pro umožnění čtení souboru:
f = open("<file name>", "w+") # Textual write and read f = open("<file name>", "wt+") # Same as above f = open("<file name>", "wb+") # Binary write and read
open() funkce vrací objekt souboru, jehož podrobnosti závisí na zvolených režimech.
Režim připojení
Režim připojení přidává informace do existujícího souboru a umístí ukazatel na konec. Pokud soubor neexistuje, režim připojení jej vytvoří.
K otevření souboru v režimu připojení použijte jeden z následujících řádků:
f = open("<file name>", "a") # Text append f = open("<file name>", "at") # Same as above f = open("<file name>", "ab") # Binary append
Přidejte + podepsat pro zahrnutí funkce čtení.
Režim vytvoření
Režim vytváření (také známý jako exkluzivní vytvoření) vytvoří soubor pouze v případě, že neexistuje, a umístí ukazatel na začátek souboru.
K otevření souboru v režimu vytváření použijte jeden z následujících řádků:
f = open("<file name>", "x") # Text create f = open("<file name>", "xt") # Same as above f = open("<file name>", "xb") # Binary create
Přidejte + přihlášení do režimu zahrnuje funkci čtení na kterýkoli z výše uvedených řádků.
Čtení souborů v Pythonu
Po importu souboru do objektu Python nabízí četné metody pro čtení obsahu.
Použijte read() metodu na objekt souboru a vytiskněte výsledek. Například:
f = open("file.txt")
print(f.read(),end="")
Kód vytiskne obsah textového souboru.
Přečtěte si části souboru
Zadejte číslo do read() funkce pro čtení pouze zadaného počtu znaků:
f = open("file.txt")
print(f.read(5))
Výstup vytiskne prvních pět znaků v souboru.
Případně použijte readline() metoda pro tisk pouze prvního řádku souboru:
f = open("file.txt")
print(f.readline())
Přidejte celé číslo do readline() funkce pro tisk zadaného počtu znaků bez překročení prvního řádku.
Číst řádky
Chcete-li číst řádky a procházet obsah souboru, použijte for smyčka:
f = open("file.txt")
for line in f:
print(line, end="")
Případně použijte readlines() metoda na objekt souboru:
f = open("file.txt")
print(f.readlines())
Funkce vrací seznam řádků ze souborového proudu.
Přidejte celé číslo do readlines() funkce pro ovládání počtu řádků. Například:
f = open("file.txt")
print(f.readlines(15))
Celé číslo představuje číslo znaku a funkce vrací řádek, kde znak končí, spolu s předchozími řádky.
Zavřít soubory
Soubor zůstane otevřený až do vyvolání close() funkce. Je dobrým zvykem zavřít soubory, které se již nepoužívají, abyste se vyhnuli nepředvídatelnému chování souborů a poškozeným souborům.
Chcete-li soubor zavřít, spusťte close() metoda na objekt souboru:
f.close()
Alternativní způsob, jak zajistit uzavření souboru, je použít with prohlášení. Například:
with open("<file name>"):
file_contents = f.read()
# Additional code here
with příkaz automaticky zavře soubor.
Odstranění souborů v Pythonu
Odebrání souborů v Pythonu vyžaduje navázání komunikace s operačním systémem. Importujte os knihovny a odstraňte soubor pomocí následujícího:
import os
os.remove("file.txt")
Soubor již není k dispozici. Pokud soubor neexistuje, Python vyvolá chybu.
Metody souborů Python
Python nabízí různé další funkce při práci se souborovými objekty. Níže je tabulka, která popisuje všechny dostupné procesy a co dělají.
| Metoda | Popis |
|---|---|
close() | Vyprázdní a zavře objekt souboru. |
detach() | Odděluje vyrovnávací paměť od textového proudu a vrací vyrovnávací paměť. |
fileno() | Vrátí deskriptor souboru, je-li k dispozici. |
flush() | Vyprázdní vyrovnávací paměť pro zápis. Není k dispozici pro objekty pouze pro čtení. |
isatty() | Zkontroluje, zda je proud souboru interaktivní. |
read(<int>) | Přečtěte si <int> maximálně počet znaků. |
readable() | Zkontroluje, zda je objekt čitelný. |
readline(<int>) | Čte od objektu až do nového řádku nebo konce souboru. |
readlines(<int>) | Vrátí seznam řádků z objektu souboru, kde je <int> je přibližný počet znaků. |
seek(<offset>, <position>) | Změní pozici ukazatele na <offset> vzhledem k <position> . |
seekable() | Zkontroluje, zda objekt souboru podporuje náhodný přístup. |
tell() | Vytiskne aktuální pozici streamu. |
truncate(<byte>) | Změní velikost datového proudu souboru na <bytes> (nebo aktuální pozice, pokud není uvedena) a vrátí velikost. |
write(<string>) | Zapíše <string> do objektu file a vrátí zapsaný počet znaků. |
writable() | Zkontroluje, zda objekt souboru umožňuje zápis. |
writelines(<list>) | Zapíše <list> řádků do proudu bez oddělovače řádků. |