logo

Jak otevřít soubor pomocí příkazu with

The s klíčové slovo v Pythonu se používá jako kontextový manažer. Stejně jako v každém programovacím jazyce je použití zdrojů, jako jsou operace se soubory nebo připojení k databázi, velmi běžné. Nabídka těchto zdrojů je však omezená. Hlavní problém tedy spočívá v zajištění uvolnění těchto prostředků po použití. Pokud nejsou uvolněny, povede to k úniku zdrojů a může způsobit zpomalení nebo zhroucení systému.

Jak víme, funkce open() se obecně používá pro práci se soubory v Pythonu. Je však standardní praxí používat ke zpracování souborů kontextové manažery jako u klíčových slov, protože po dokončení použití soubory automaticky uvolní.



Python se syntaxí open():

Syntax:

s open(file_path, mode, encoding) jako soubor:



cesta k souboru: Je to cesta k souboru, který se má otevřít

režim: režim provozu na souboru. např.: číst, psát atd. (reprezentováno r, w, r+, w+, rb, wb atd.)

kódování: číst soubor ve správném formátu kódování.



Příklad 1: Jednoduchý příklad s použitím příkazu with

Již máme název souboru geeksforgeeks.txt v našem systému a obsahuje následující údaje:

geeksforgeeks,txt

Nyní otevřeme soubor a načteme obsah souboru pomocí příkazu s open():

Python3

xor cpp




with>open>(>'geeksforgeeks.txt'>,>'r'>) as gfg_file:> >file_content>=> gfg_file.read()> >print>(file_content)>

>

>

Výstup:

GeeksForGeeks is best for DSA>

Poznámka: Zde jsme použili režim jako r číst data, protože cílový soubor obsahuje textová data. V případě, že čteme nějaký binární soubor, musíme použít rb jako režim.

Příklad 2: Můžeme také použít s příkaz k připojení nebo zápisu dat do souboru.

Řetězec připojíme Ahoj geekové! do našeho souboru geeksforgeeks.txt.

Python3




java řetězec cmp
# appending string to file> with>open>(>'geeksforgeeks.txt'>,>'a'>) as gfg_file:> >gfg_file.write(>' Hello Geeks!'>)> > # reading the file contents> # to verify if successfully appended the data> with>open>(>'geeksforgeeks.txt'>,>'r'>) as gfg_file:> >content>=> gfg_file.read()> >print>(content)>

>

>

Výstup:

GeeksForGeeks is best for DSA Hello Geeks!>

Poznámka: Zde jsme použili A jako režim otevírání souboru je to proto, že chceme připojit k souboru data. Místo toho, pokud bychom chtěli přepsat data souboru, použili bychom v režimu.

Příklad 3: Použití vnořeného příkazu open k otevření více souborů

Jak otevřít soubor pomocí příkazu with

links.txt

Definovali jsme a links.txt soubor obsahující nějaké náhodné odkazy. Otevřeme geeksforgeeks.txt výše zmíněný soubor a připojte obsah souboru odkazů do souboru geeksforgeeks.txt soubor.

Python3




# appending string to file> with>open>(>'geeksforgeeks.txt'>,>'a'>) as gfg_file:> >gfg_file.write(>' Hello Geeks!'>)> >with>open>(>'links.txt'>,>'r'>) as links_file:> >lines>=> links_file.readlines()> >gfg_file.writelines(lines)>

>

>

geeksforgeeks.txt obsah souboru po úpravě:

Jak otevřít soubor pomocí příkazu with

geeksforgeeks,txt

Zde můžeme vidět, že obsah links.txt soubor byl přidán do souboru geeksforgeeks.txt soubor po spuštění skriptu.

Rozdíl v použití open() a open()

I když funkce použití OTEVŘENO() a s OTEVŘENO() je úplně stejný, ale jsou zde některé důležité rozdíly:

  • Pomocí open() můžeme použít obslužný program souboru, pokud soubor nebyl explicitně uzavřen pomocí file_handler.close() , ale v případě použití s ​​kontextovým manažerem open() nemůžeme použít obsluhu souboru mimo blok with. Zvedne se ValueError: I/O operace na uzavřeném souboru v tom případě.
  • Při použití open() musíme explicitně zavřít instanci otevřeného souboru, jinak se mohou při otevírání stejného souboru vyskytnout chyby v jiných částech kódu. V případě open() je uzavření souboru řešeno kontextovým manažerem.
  • Použití s ​​kontextovým příkazem open() dělá kód přehlednějším, protože můžeme snadno oddělit kód bloky rozdílem v odsazení. V případě open() můžeme vynechat uzavření instance souboru, což může způsobit úniky paměti a další chyby I/O operace.