Новини високих технологій
» » Робота з файловими об'єктами: функція open, читання і запис у файли в Python

Робота з файловими об'єктами: функція open, читання і запис у файли в Python

20-12-2017, 12:44
1 838
Файли належать до базових типів даних мови Python. Це сполучний інтерфейс між кодом і іменованими областями пам'яті комп'ютера. Файли виконують функцію «консервування» об'єктів. Вони дозволяють зберігати будь-яку інформацію з її подальшим вивантаженням і обробкою. Ми розглянемо, як здійснити запис у файл в Python і зворотне читання даних з практичними прикладами.

Як відкрити файл?

Робота з цим типом даних стартує з вбудованої функції open. Вона створює об'єкт файлу, який забезпечує зв'язок із зовнішнім документом на комп'ютері. Після того як ви викличте функцію, можна виконувати операції читання або запису у файли в Python.


Для новачків робота з файлами здасться складним. Вони відрізняються від звичних рядків, чисел, словників. Для взаємодії з ними не використовуються літерали послідовностей або відображень, тільки методи. Більша частина методів спрямована на виконання введення і виведення інформації, але є і більш специфічні. Наприклад, інструкція output.flush(), яка виштовхує на диск вихідні буфери. Але ми почнемо з вивчення того, як відкрити файл. Насамперед потрібно викликати open(), в дужках передати функції, ім'я зовнішнього файлу і режим роботи з ним: r – означає, що за замовчуванням відкриється режим читання; w – режим запису у файли в Python; a – для запису інформації в кінець документа; b – обробка двійкових файлів; знак «+» означає читання і запис одночасно. Важливе правило – всі аргументи потрібно вказувати як літерали рядків, тобто в лапках і через кому:


This_file = open(«C:odd», «w») #Приклад виклику функції open в інтегрованому середовищі розробки.

Як використовувати файли?

Після того як файл відкритий, ви можете використовувати всі його методи. Вміст для читання буде представлено у вигляді рядків. Для запису у файли в Python інформація також повинна мати вигляд строкових об'єктів. Список найбільш використовуваних операцій: input.read() – повертає інформацію в якості єдиної рядки; input.readline() – прочитати наступний рядок; input.readlines() – уявити файл для читання цілком зі списком рядків; .write() – запис рядків; .writelines() – запис всіх рядків; .close() – вручну закрити документ.

Особливості роботи з файлами

Вся інформація, що міститься всередині файлів, представлена у вигляді строкових об'єктів. Тому перш ніж приступити до її обробці, потрібно виконати перетворення даних. Використовуйте для цього вбудовані методи int() або list(). А також вирази для форматування рядків. Використовувати метод close необов'язково. Але при роботі з flush звільняються ресурси ОС і відбувається виштовхування вихідних буферів. За замовчуванням висновок відбувається за допомогою проміжних буферів. Коли здійснюється запис у файл в Python, інформація не відразу потрапляє на диск, а тільки в момент закриття.

Приклад запису у файл

Розберемо приклад роботи з текстовим файлом в інтерактивному сеансі. Перший крок – це відкрити файл в IDLE. Попередньо його створювати немає необхідності: первый_ф = open(«первый_файл.txt», «w») первый_ф.write(«Будь текстп») #Записуємо рядка 12 первый_ф.write(«І знову будь текстп») 20 первый_ф.close() #Закриваємо; первый_ф = open(«первый_файл.txt») первый_ф.readline() #Читаємо, те, що записано «Будь текстп» Після запису рядка у файл, Python 3.0 повертає число введених символів. У попередній версії цього не відбувається. У прикладі використовувався символ кінця рядка n. Без нього метод write запише всі суцільним текстом.
Якщо ви хочете прочитати вміст файлу без вказівки n наприкінці, скористайтеся методом read: print(open(«первый_файл.txt»).read()) будь-який текст; і знову текст; Переглянути кожний рядок по черзі можна за допомогою ітерації: for x in open(«первый_файл.txt»): print(x, end = « ») будь-який текст і знову текст #Кожна нова рядок буде виведена з відступом.

Збереження базових об'єктів мови Python файл

У текстовий файл можна зберігати будь-які вбудовані або створені вручну об'єкти. Щоб здійснити запис у файли в Python порядково, кожен елемент потрібно попередньо перетворити на рядок. Також потрібно пам'ятати, що методи не форматують дані. пример_2 = open(«второй_файл.txt», «w») Список =[1,8, «r»] C, B, P = 349056 Стр = «Набір символів» пример_2.write(str(Список) + «n») 12 пример_2.write(«%s, %s, %sn» % (C, B, P)) 11 пример_2.write(Стр + «n») 15 пример_2.close() print(open(«второй_файл.txt»).read()) [1, 8, «r»] 349056 набір символів У цьому прикладі спочатку створюється новий файловий об'єкт «второй_файл.txt» для запису. П'яти імен присвоюються значення списку, рядки й цілих чисел. Перед записом кожен об'єкт перетворюється в рядок. В кінці файл відкривається з допомогою вбудованої функції print і методу read.

За тим же принципом здійснюється в Python запис словника в файл. Необхідно викликати функцію str і передати їй як аргумент об'єкт. Складніше всього не зберегти дані, а отримати їх і перетворити назад в словники або числа. Перетворення рядка в об'єкти мови допоможе метод readline: L = open(«второй_файл.txt») F = L. readline() F «349056n» Numbers = F. split(«,») #ком розбити на підрядки Numbers [«34», «90», «56n»] Numbers =[int(x) for x in Numbers]#Перетворити весь список Numbers [34, 90, 56]

Запис об'єктів за допомогою спеціальних модулів

До складу стандартної бібліотеки входить модуль під назвою pickle. Це надзвичайно корисний інструмент для запису і зворотного отримання інформації. Особливо в тому випадку, коли ви не довіряєте джерелу файлу. Модуль являє собою універсальну утиліту, яка автоматично форматує і перетворює дані. Щоб записати об'єкт будь-якого типу (словник), його достатньо передати pickle: Словник = {«вісім»: 8 «три»: 3 «нуль»: 0} Словник {«вісім»: 8 «три»: 3 «нуль»: 0} документ = open(«мой_документ.pkl», «wb») import pickle росол.dump(Словник, документ) документ.close() документ = open(«мой_документ.pkl», «rb») Д = pickle.load(документ) Д {«вісім»: 8 «три»: 3 «нуль»: 0} З модулем немає необхідності витягувати і перетворювати дані вручну. Він сам виконує серіалізацію об'єктів в рядок байтів і назад. Для цього в аргументах open вказується wb – write binary. Аналогічно pickle, «консервувати» дані можна за допомогою модуля Python – JSON. Запис у файл здійснюється методом dump. В якості аргументів указуються зберігаються об'єкти, які автоматично сериализуются в рядок JSON-формату. import json Словник = {«вісім»: 8 «три»: 3 «нуль»: 0} with open(«мой_документ.json», «w») as м_д: json.dump(Словник, м_д) Існують і більш складні способи роботи з файлами. Наприклад, операція сканування, організація циклів запису. Щоб побачити весь перелік методів, скористайтесь в інтерактивному сеансі функціями help або dir. Також в арсеналі мови є об'єкти, схожі на файли, - сокети, потоки командної оболонки і введення-виведення.
Цікаво по темі
Умовні інструкції if/else в Python: синтаксис і застосування
Умовні інструкції if/else в Python: синтаксис і застосування
Мова програмування Python містить потужний набір процедурних інструкцій. Вони необхідні для обробки окремих об'єктів і великих блоків коду, таких як
Що таке об'єкти типу str в Python
Що таке об'єкти типу str в Python
Рядок str в Python є вбудованим типом даних. Це незмінні послідовності, які зазвичай використовуються програмістами для запису текстової інформації.
Функції в Python: def. Python 3 для початківців
Функції в Python: def. Python 3 для початківців
Функції – це зручний інструмент, що дозволяє розбивати текст на невеликі блоки коду. Створюються з допомогою спеціальних інструкцій мови Python –
Введення і виведення в Python. Input і print
Введення і виведення в Python. Input і print
Приємне спілкування користувача з Python – одна з багатьох привабливих рис програми. Простота, сучасність, лаконічність і зрозумілість – ось чим
Java: робота з файлами - запис, читання, видалення
Java: робота з файлами - запис, читання, видалення
Переважна більшість програм, написаних на Java, так чи інакше взаємодіють з файлами, зберігаючи і дістаючи звідти потрібну інформацію. Для операцій з