Як відкрити файл за допомогою оператора with

Як відкрити файл за допомогою оператора with

The з Ключове слово в Python використовується як менеджер контексту. Як і в будь-якій мові програмування, використання таких ресурсів, як операції з файлами або підключення до бази даних, є дуже поширеним. Але пропозиції цих ресурсів обмежені. Тому основна проблема полягає в тому, щоб переконатися, що ці ресурси звільнені після використання. Якщо їх не випустити, це призведе до витоку ресурсів і може призвести до уповільнення або збою системи.

Як ми знаємо, функція open() зазвичай використовується для обробки файлів у Python. Але стандартною практикою є використання контекстних менеджерів, наприклад із ключовими словами, для обробки файлів, оскільки вони автоматично звільняють файли після завершення використання.

Python із синтаксисом open():

Синтаксис:

з відкритим (шлях до файлу, режим, кодування) як файл:

шлях_файлу: Це шлях до файлу, який потрібно відкрити

режим: режим роботи над файлом. напр.: читати, писати тощо (представлено r, w, r+, w+, rb, wb тощо)

кодування: прочитати файл у правильному форматі кодування.

приклад 1: Простий приклад використання оператора with

У нас уже є назва файлу geeksforgeeks.txt у нашій системі та містить такі дані:

geeksforgeeks, txt

Тепер ми відкриємо файл і прочитаємо його вміст за допомогою оператора open():

Python3




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

Вихід:

GeeksForGeeks is best for DSA 

Примітка: Тут ми використали режим як r для читання даних, оскільки цільовий файл містить текстові дані. Якщо ми читаємо якийсь бінарний файл, нам потрібно використовувати рб як режим.

приклад 2: Ми також можемо використовувати з оператор для додавання або запису даних у файл.

Ми додамо рядок Привіт гікам! до нашого файлу geeksforgeeks.txt.

Python3




# 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)>

Вихід:

GeeksForGeeks is best for DSA Hello Geeks! 

Примітка: Ось ми використали a як режим відкриття файлу, це тому, що ми хочемо додати до файлу дані. Натомість, якби ми хотіли перезаписати дані файлу, ми б використали в режим.

Приклад 3: використання вкладеного оператора open для відкриття кількох файлів

Як відкрити файл за допомогою оператора with

links.txt

Ми визначили a links.txt файл, що містить кілька випадкових посилань. Ми відкриємо geeksforgeeks.txt файл, згаданий вище, і додайте вміст файлу посилань у geeksforgeeks.txt файл.

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 вміст файлу після зміни:

Як відкрити файл за допомогою оператора with

geeksforgeeks, txt

Тут ми бачимо, що вміст links.txt файл додано до geeksforgeeks.txt файл після запуску сценарію.

Різниця між використанням open() і open()

Хоча функція використання ВІДЧИНЕНО() і з ВІДЧИНЕНО() точно так само, але є деякі важливі відмінності:

  • Використовуючи open(), ми можемо використовувати обробник файлів, якщо файл не було явно закрито за допомогою file_handler.close() , але у випадку використання з менеджером контексту open() ми не можемо використовувати обробник файлів поза блоком with. Це підніме ValueError: операція введення-виведення із закритим файлом в такому разі.
  • Під час використання open() нам потрібно явно закрити відкритий екземпляр файлу, інакше інші частини коду можуть зіткнутися з помилками під час відкриття того самого файлу. У open() закриття файлу обробляється менеджером контексту.
  • Використання оператора контексту with open() робить код більш охайним, оскільки ми можемо легко відокремити блок коду за різницею у відступах. У випадку open() ми можемо пропустити закриття екземпляра файлу, це може спричинити витік пам’яті та інші помилки операцій введення-виведення.