Python надає вбудовані функції для створення, запису та читання файлів. У Python можна обробляти два типи файлів: звичайні текстові файли та двійкові файли (написані двійковою мовою, 0 і 1).
- Текстові файли: у файлах цього типу кожен рядок тексту завершується спеціальним символом, який називається EOL (кінець рядка), який за замовчуванням є символом нового рядка («
») у Python. Двійкові файли: у файлах цього типу немає термінатора для рядка, і дані зберігаються після перетворення їх на зрозумілу машині двійкову мову.
Примітка: Щоб дізнатися більше про обробку файлів натисніть тут .
Зміст
Режим доступу
Режими доступу визначають тип операцій, можливих у відкритому файлі. Це стосується того, як файл буде використовуватися після його відкриття. Ці режими також визначають розташування дескриптора файлу у файлі. Дескриптор файлу схожий на курсор, який визначає, звідки дані мають читатися або записуватися у файл. Різні режими доступу для читання файлу:
- Лише запис (‘w’): відкрити файл для запису. Для наявного файлу дані скорочуються та перезаписуються. Ручка розташована на початку файлу. Створює файл, якщо файл не існує. Запис і читання (‘w+’): відкрити файл для читання та запису. Для наявного файлу дані скорочуються та перезаписуються. Ручка розташована на початку файлу. Лише додавання («a») : відкрити файл для запису. Файл створюється, якщо він не існує. Ручка розташована в кінці файлу. Дані, що записуються, будуть вставлені в кінці, після наявних даних.
Примітка: Щоб дізнатися більше про режим доступу натисніть тут .
Відкриття файлу
Це робиться за допомогою функції open(). Для цієї функції не потрібно імпортувати модуль. Синтаксис:
File_object = open(r'File_Name', 'Access_Mode')>
Файл має бути в тому самому каталозі, що й файл програми python else, повна адреса файлу має бути написана замість назви файлу. Примітка: R ставиться перед назвою файлу, щоб запобігти розгляданню символів у рядку назви файла як спеціальних символів. Наприклад, якщо в адресі файлу є emp, тоді розглядається як символ табуляції, і виникає помилка недійсної адреси. r робить рядок необробленим, тобто повідомляє, що рядок містить будь-які спеціальні символи. R можна проігнорувати, якщо файл знаходиться в тому самому каталозі, а адреса не розміщена.
Python3
бінарне дерево
# Open function to open the file 'MyFile1.txt'> # (same directory) in read mode and> file1>=> open>('MyFile.txt', 'w')> > # store its reference in the variable file1> # and 'MyFile2.txt' in D:Text in file2> file2>=> open>(r'D:TextMyFile2.txt', 'w>+>')> |
>
>
Тут file1 створюється як об’єкт для MyFile1, а file2 – як об’єкт для MyFile2.
Закриття файлу
Функція close() закриває файл і звільняє простір пам’яті, зайнятий цим файлом. Він використовується, коли файл більше не потрібний або якщо його потрібно відкрити в іншому файловому режимі. Синтаксис:
File_object.close()>
Python3
# Opening and Closing a file 'MyFile.txt'> # for object name file1.> file1>=> open>('MyFile.txt', 'w')> file1.close()> |
>
>
Запис у файл
Існує два способи запису у файл.
- write() : вставляє рядок str1 в один рядок текстового файлу.
File_object.write(str1)>
- writelines() : для списку елементів рядка кожен рядок вставляється в текстовий файл. Використовується для вставки кількох рядків одночасно.
File_object.writelines(L) for L = [str1, str2, str3]>
Примітка: ‘ ’ розглядається як спеціальний двобайтовий символ. приклад:
Python3
# Python program to demonstrate> # writing to file> # Opening a file> file1>=> open>(>'myfile.txt'>,>'w'>)> L>=> ['This>is> Delhi
', 'This>is> Paris
', 'This>is> London
']> s>=> 'Hello
'> # Writing a string to file> file1.write(s)> # Writing multiple strings> # at a time> file1.writelines(L)> # Closing file> file1.close()> # Checking if the data is> # written to file or not> file1>=> open>(>'myfile.txt'>,>'r'>)> print>(file1.read())> file1.close()> |
>
>
Вихід:
Hello This is Delhi This is Paris This is London>
Додавання до файлу
Коли файл відкривається в режимі додавання, маркер розташовується в кінці файлу. Дані, що записуються, будуть вставлені в кінці, після наявних даних. Давайте переглянемо наведений нижче приклад, щоб прояснити різницю між режимом запису та режимом додавання.
Python3
# Python program to illustrate> # Append vs write mode> file1>=> open>('myfile.txt', 'w')> L>=> ['This>is> Delhi
', 'This>is> Paris
', 'This>is> London
']> file1.writelines(L)> file1.close()> # Append-adds at last> file1>=> open>('myfile.txt', 'a')># append mode> file1.write('Today
')> file1.close()> file1>=> open>('myfile.txt', 'r')> print>('Output of Readlines after appending')> print>(file1.read())> print>()> file1.close()> # Write-Overwrites> file1>=> open>('myfile.txt', 'w')># write mode> file1.write('Tomorrow
')> file1.close()> file1>=> open>('myfile.txt', 'r')> print>('Output of Readlines after writing')> print>(file1.read())> print>()> file1.close()> |
>
>
Вихід:
Output of Readlines after appending This is Delhi This is Paris This is London Today Output of Readlines after writing Tomorrow>
З заявою
оператор with у Python використовується в обробці винятків, щоб зробити код чистішим і більш читабельним. Це спрощує керування загальними ресурсами, такими як файлові потоки. На відміну від наведених вище реалізацій, немає необхідності викликати file.close() під час використання оператора with. Сам оператор with забезпечує належне отримання та вивільнення ресурсів. Синтаксис:
with open filename as file:>
Python3
# Program to show various ways to> # write data to a file using with statement> L>=> ['This>is> Delhi
', 'This>is> Paris
', 'This>is> London
']> # Writing to file> with>open>('myfile.txt', 'w') as file1:> ># Writing data to a file> >file1.write('Hello
')> >file1.writelines(L)> # Reading from file> with>open>('myfile.txt', 'r>+>') as file1:> ># Reading form a file> >print>(file1.read())> |
>
>
Вихід:
Hello This is Delhi This is Paris This is London>
Примітка. Щоб дізнатися більше про заяву, натисніть тут.
використання для заяви:
кроки:
Щоб записати файл у Python за допомогою оператора for, виконайте такі дії:
Відкрийте файл за допомогою функції open() із відповідним режимом («w» для запису).
Використовуйте оператор for для циклічного перегляду даних, які ви хочете записати у файл.
Використовуйте метод write() об’єкта file, щоб записати дані у файл.
Закрийте файл за допомогою методу close() файлового об’єкта.
У цьому прикладі файл відкривається для запису за допомогою оператора with open(‘file.txt’, ‘w’) as f. Дані, які потрібно записати, зберігаються у списку, який називається даними. Інструкція for використовується для циклу по кожному рядку даних у списку. Оператор f.write(line + ‘ ’) записує кожен рядок даних у файл із символом нового рядка ( ) у кінці. Нарешті, файл автоматично закривається, коли закінчується блок with.
Python3
# Open the file for writing> with>open>(>'file.txt'>,>'w'>) as f:> ># Define the data to be written> >data>=> [>'This is the first line'>,>'This is the second line'>,>'This is the third line'>]> ># Use a for loop to write each line of data to the file> >for> line>in> data:> >f.write(line>+> '
'>)> ># Optionally, print the data as it is written to the file> >print>(line)> # The file is automatically closed when the 'with' block ends> |
>
>Вихід
This is the first line This is the second line This is the third line>
Підхід:
Код відкриває файл під назвою file.txt у режимі запису за допомогою блоку with, щоб забезпечити належне закриття файлу після завершення блоку. Він визначає список рядків, які називаються даними, які представляють рядки, які потрібно записати у файл. Потім код використовує цикл for для повторення кожного рядка в даних і записує кожен рядок у файл за допомогою методу write(). Код додає символ нового рядка до кожного рядка, щоб переконатися, що кожен рядок записується на новому рядку у файлі. Код додатково друкує кожен рядок, коли він записується у файл.
Часова складність:
Як оригінальний код, так і альтернативний код мають часову складність O(n), де n — це кількість рядків, які потрібно записати у файл. Це пояснюється тим, що обидва коди повинні повторювати кожен рядок у списку даних, щоб записати їх у файл.
Космічна складність:
Оригінальний код і альтернативний код мають однакову просторову складність O(n), де n – це кількість рядків, які потрібно записати у файл. Це пояснюється тим, що обидва коди повинні створити список рядків, які представляють рядки, які потрібно записати у файл.