Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Вивчайте Робота з різними режимами файлів | Розширена Робота з Файлами та Менеджери Контексту
Структурне програмування на Python

Робота з різними режимами файлів

Свайпніть щоб показати меню

Вивчення використання різних режимів роботи з файлами у Python для читання, запису та додавання даних з практичними прикладами.

Режими роботи з файлами у Python включають: 'r' для читання, 'w' для запису (створює/обрізає), 'a' для додавання (створює, якщо відсутній), 'b' для бінарного режиму та '+' для читання/запису. Вибір правильного режиму допомагає уникнути втрати даних.

Режим читання

Режим читання ('r') відкриває існуючий файл лише для читання. Ви не можете записувати або змінювати файл у цьому режимі. Якщо файл не існує, Python видасть помилку FileNotFoundError. Використовуйте цей режим, коли потрібно отримати доступ до даних у файлі без змін його вмісту.

123456
with open("sample.txt", "w") as f: f.write("This is a sample file.\nSecond line.") with open("sample.txt", "r") as f: content = f.read() print(content)

Цей код створює текстовий файл із зразковим вмістом, а потім зчитує та виводить вміст із файлу.

Режим запису

Режим запису (w) у Python відкриває файл для запису. Використовується режим w, коли потрібно почати роботу з файлом з нуля: створити новий файл або очистити існуючий для заміни його вмісту. Зверніть увагу: усі наявні дані у файлі буде втрачено при відкритті у режимі w.

1234567891011
with open("write_example.txt", "w") as file: file.write("This file was created or overwritten using write mode.\n") with open("write_example.txt", "r") as file: print(file.read()) with open("write_example.txt", "w") as file: file.write("Every time you run this code, the contents are replaced.\n") with open("write_example.txt", "r") as file: print(file.read())

Цей код демонструє вміст файлу після першого запису та після перезапису, щоб показати, як попередні дані видаляються та замінюються новим вмістом.

Режим додавання

Режим додавання, який задається режимом файлу 'a', відкриває файл для запису шляхом додавання нового вмісту в кінець файлу. Якщо файл не існує, він буде створений автоматично. Цей режим корисний, коли потрібно зберегти наявні дані та просто додати нову інформацію в кінці, наприклад, для ведення журналу нових записів або оновлення даних з часом. На відміну від режиму запису ('w'), режим додавання ніколи не видаляє та не перезаписує існуючий вміст.

123456789
with open("append_example.txt", "w") as f: f.write("Original line\n") with open("append_example.txt", "a") as f: f.write("Appended line\n") with open("append_example.txt", "r") as f: result = f.read() print(result.strip())

Цей код спочатку створює файл з початковим вмістом. Потім він відкриває той самий файл у режимі додавання ('a'), щоб додати новий рядок у кінці. Нарешті, він зчитує та виводить увесь вміст файлу, щоб ви могли побачити, що нові дані були додані в кінець без видалення чи зміни початкового вмісту.

Бінарний режим

Бінарний режим використовується, коли потрібно зчитувати або записувати файли у вигляді байтів, а не тексту. Це необхідно для роботи з нетекстовими файлами, такими як зображення, аудіофайли або виконувані файли. Ви комбінуєте 'b' з іншими режимами файлів, наприклад, 'rb' для читання у бінарному режимі або 'wb' для запису у бінарному режимі.

Коли ви відкриваєте файл у бінарному режимі, дані зчитуються та записуються саме як сирі байти. Жодного кодування чи декодування не відбувається, тому потрібно працювати з даними як з об'єктами типу bytes. Це запобігає проблемам, які можуть виникнути при зчитуванні або записі файлів, що не використовують стандартне текстове кодування.

12345678
byte_data = b"\x48\x65\x6c\x6c\x6f, binary world!" # This is 'Hello, binary world!' in bytes with open("sample_binary.bin", "wb") as f: f.write(byte_data) with open("sample_binary.bin", "rb") as f: read_bytes = f.read() print(read_bytes)

Цей код записує байтовий рядок, що містить повідомлення 'Hello, binary world!', у файл з назвою sample_binary.bin, використовуючи режим запису у двійковому форматі ('wb'). Літера b у режимі забезпечує обробку файлу як двійкових даних, а не тексту. Після запису файл знову відкривається у режимі читання у двійковому форматі ('rb') для зчитування сирих байтів. Код виводить людинозчитуване представлення об'єкта байтів.

Режим читання та запису

Режим файлу r+ дозволяє як читати, так і записувати у вже існуючий файл. При відкритті файлу з r+ можна зчитувати його вміст, змінювати його або додавати нові дані у будь-якому місці. Однак файл повинен вже існувати — r+ не створить новий файл, якщо не знайде файл із вказаною назвою.

Цей режим корисний, коли потрібно оновити або обробити дані у файлі без втрати наявного вмісту. Будь-яка операція запису починається з поточної позиції у файлі, тому можна точно контролювати, де відбуваються зміни, використовуючи методи керування покажчиком файлу, такі як seek().

1234567891011121314151617
# Writing initial content to the file with open("data.txt", "w") as f: f.write("First line\nSecond line\n") # Opening the file in r+ mode for reading and updating with open("data.txt", "r+") as f: # Reading and printing the original content original_content = f.read() print("Before update:\n" + original_content.strip()) # Moving file pointer to the beginning f.seek(0) # Overwriting the first line f.write("Updated first line\n") # Moving pointer to the start to read the updated content f.seek(0) updated_content = f.read() print("After update:\n" + updated_content.strip())

Цей результат демонструє, що перший рядок файлу було успішно перезаписано. Використовуючи режим читання/запису ('r+'), можна оновлювати окремі частини файлу — наприклад, змінювати лише перший рядок — без видалення або перезапису всього файлу. Це корисно для редагування наявних даних із збереженням іншого вмісту файлу.

Під час використання режиму 'r+' будь-які нові дані, які ви записуєте, перезаписують існуючий вміст, починаючи з поточної позиції у файлі. Якщо новий вміст коротший за оригінальний, залишкова частина старого рядка залишається у файлі. Це означає, що часткові залишки попереднього вмісту можуть залишатися після нового запису. Файл не обрізається автоматично, тому зайві символи з початкового вмісту можуть залишатися після завершення нового запису.

1. Який режим відкриття файлу слід використовувати, якщо потрібно прочитати існуючий текстовий файл без його зміни?

2. Який режим файлу слід використовувати, щоб додати нові дані в кінець існуючого текстового файлу, не видаляючи його поточний вміст?

question mark

Який режим відкриття файлу слід використовувати, якщо потрібно прочитати існуючий текстовий файл без його зміни?

Виберіть правильну відповідь

question mark

Який режим файлу слід використовувати, щоб додати нові дані в кінець існуючого текстового файлу, не видаляючи його поточний вміст?

Виберіть правильну відповідь

Все було зрозуміло?

Як ми можемо покращити це?

Дякуємо за ваш відгук!

Секція 2. Розділ 1

Запитати АІ

expand

Запитати АІ

ChatGPT

Запитайте про що завгодно або спробуйте одне із запропонованих запитань, щоб почати наш чат

Секція 2. Розділ 1
some-alt