Передумови:
Python надає вбудовані функції для створення, запису та читання файлів. Існує два типи файлів, які можна обробляти в Python, звичайні текстові файли та двійкові файли (написані двійковою мовою, 0 і 1). У цій статті ми вивчатимемо читання файлу рядок за рядком.
Спосіб 1: читання файлу рядок за рядком за допомогою readlines()
readlines() використовується для читання всіх рядків за один раз, а потім повертає їх як елемент рядка у списку. Цю функцію можна використовувати для невеликих файлів, оскільки вона зчитує весь вміст файлу в пам’ять, а потім розбиває його на окремі рядки. Ми можемо перебирати список і видаляти символ нового рядка « » за допомогою функції strip().
приклад:
Python3
# Python code to> # demonstrate readlines()> L>=> [>'Geeks
'>,>'for
'>,>'Geeks
'>]> # writing to file> file1>=> open>(>'myfile.txt'>,>'w'>)> file1.writelines(L)> file1.close()> # Using readlines()> file1>=> open>(>'myfile.txt'>,>'r'>)> Lines>=> file1.readlines()> count>=> 0> # Strips the newline character> for> line>in> Lines:> >count>+>=> 1> >print>(>'Line{}: {}'>.>format>(count, line.strip()))> |
>
>
Вихід:
Line1: Geeks Line2: for Line3: Geeks>
Часова складність даного коду Python становить O(n), де n – загальна кількість рядків у файлі
Складність допоміжного простору коду дорівнює O(n), де n – загальна кількість рядків у файлі.
перерва java
Спосіб 2: читання файлу рядок за рядком за допомогою readline()
Функція readline() читає рядок файлу та повертає його у вигляді рядка. Він приймає параметр n, який визначає максимальну кількість байтів, які будуть прочитані. Однак не читає більше одного рядка, навіть якщо n перевищує довжину рядка. Це буде ефективним під час читання великого файлу, оскільки замість того, щоб отримати всі дані за один раз, він отримує рядок за рядком. readline() повертає наступний рядок файлу, який містить символ нового рядка в кінці. Крім того, якщо досягнуто кінця файлу, він поверне порожній рядок.
приклад:
ПОКРОКОВИЙ ПІДХІД:
- Створіть список L із трьома рядковими елементами, що містять символи нового рядка.
- Відкрийте файл із назвою myfile.txt у режимі запису та призначте його змінній file1.
- Запишіть вміст списку L у файл за допомогою методу writelines() файлового об’єкта file1.
- Закрийте файловий об’єкт file1 за допомогою методу close().
- Відкрийте файл myfile.txt у режимі читання та призначте його змінній file1.
- Ініціалізуйте змінну count рівним 0.
- Запустіть нескінченний цикл.
- Збільшуйте значення змінної count на 1 у кожній ітерації циклу.
- Прочитайте наступний рядок із файлового об’єкта file1 за допомогою методу readline() і призначте його змінній line.
- Перевірте, чи рядкова змінна порожня. Якщо він порожній, це означає, що досягнуто кінця файлу. У такому випадку вийдіть із циклу за допомогою оператора break.
- Вивести значення count і вміст рядка за допомогою методу format() класу string. Метод strip() використовується для видалення символу нового рядка в кінці рядка.
- Закрийте файловий об’єкт file1 за допомогою методу close().
Python3
# Python program to> # demonstrate readline()> L>=> [>'Geeks
'>,>'for
'>,>'Geeks
'>]> # Writing to a file> file1>=> open>(>'myfile.txt'>,>'w'>)> file1.writelines((L))> file1.close()> # Using readline()> file1>=> open>(>'myfile.txt'>,>'r'>)> count>=> 0> while> True>:> >count>+>=> 1> ># Get next line from file> >line>=> file1.readline()> ># if line is empty> ># end of file is reached> >if> not> line:> >break> >print>(>'Line{}: {}'>.>format>(count, line.strip()))> file1.close()> |
>
>
Вихід:
Line1 Geeks Line2 for Line3 Geeks>
Спосіб 3: читання файлу рядок за рядком за допомогою циклу for
Ітерований об’єкт повертається функцією open() під час відкриття файлу. Цей останній спосіб читання файлу рядок за рядком включає ітерацію по файловому об’єкту в циклі for. Роблячи це, ми використовуємо переваги вбудованої функції Python, яка дозволяє нам неявно перебирати файловий об’єкт, використовуючи цикл for у поєднанні з використанням ітерованого об’єкта. Цей підхід займає менше рядків коду, що завжди є найкращою практикою, яку варто дотримуватися.
приклад:
перетворення рядка в дату
Python3
# Python program to> # demonstrate reading files> # using for loop> L>=> [>'Geeks
'>,>'for
'>,>'Geeks
'>]> # Writing to file> file1>=> open>(>'myfile.txt'>,>'w'>)> file1.writelines(L)> file1.close()> # Opening file> file1>=> open>(>'myfile.txt'>,>'r'>)> count>=> 0> # Using for loop> print>(>'Using for loop'>)> for> line>in> file1:> >count>+>=> 1> >print>(>'Line{}: {}'>.>format>(count, line.strip()))> # Closing files> file1.close()> |
>
>
Вихід:
Using for loop Line1: Geeks Line2: for Line3: Geeks>
Спосіб 4: читання файлу рядок за рядком за допомогою циклу for і розуміння списку
Розуміння списку складається з дужок, що містять вираз, який виконується для кожного елемента разом із циклом for для повторення кожного елемента. Тут ми прочитаємо текстовий файл і надрукуємо необроблені дані, включаючи символ нового рядка, в іншому виведенні ми видалили всі символи нового рядка зі списку.
приклад
Python3
with>open>(>'myfile.txt'>) as f:> >lines>=> [line>for> line>in> f]> print>(lines)> # removing the new line characters> with>open>(>'myfile.txt'>) as f:> >lines>=> [line.rstrip()>for> line>in> f]> print>(lines)> |
>
>
Вихід:
['Geeks ', 'For ', 'Geeks'] ['Geeks', 'For', 'Geeks']>
З заявою
У наведених вище підходах щоразу, коли файл відкривається, його потрібно явно закривати. Якщо хтось забуде закрити файл, це може створити кілька помилок у коді, тобто багато змін у файлах не набудуть чинності, доки файл не буде закрито належним чином. Щоб запобігти цьому, можна використати оператор. Оператор With у Python використовується в обробці винятків, щоб зробити код чистішим і більш читабельним. Це спрощує керування загальними ресурсами, такими як файлові потоки. Зверніть увагу на наведений нижче приклад коду про те, як використання оператора with робить код чистішим. Немає необхідності викликати file.close() під час використання з оператором. Сама заява with забезпечує належне отримання та вивільнення ресурсів.
приклад:
Python3
# Python program to> # demonstrate with> # statement> L>=> [>'Geeks
'>,>'for
'>,>'Geeks
'>]> # Writing to file> with>open>(>'myfile.txt'>,>'w'>) as fp:> >fp.writelines(L)> # using readlines()> count>=> 0> print>(>'Using readlines()'>)> with>open>(>'myfile.txt'>) as fp:> >Lines>=> fp.readlines()> >for> line>in> Lines:> >count>+>=> 1> >print>(>'Line{}: {}'>.>format>(count, line.strip()))> # Using readline()> count>=> 0> print>(>'
Using readline()'>)> with>open>(>'myfile.txt'>) as fp:> >while> True>:> >count>+>=> 1> >line>=> fp.readline()> >if> not> line:> >break> >print>(>'Line{}: {}'>.>format>(count, line.strip()))> # Using for loop> count>=> 0> print>(>'
Using for loop'>)> with>open>(>'myfile.txt'>) as fp:> >for> line>in> fp:> >count>+>=> 1> >print>(>'Line{}: {}'>.>format>(count, line.strip()))> |
>
.04 як дріб
>
Вихід:
Using readlines() Line1: Geeks Line2: for Line3: Geeks Using readline() Line1: Geeks Line2: for Line3: Geeks Using for loop Line1: Geeks Line2: for Line3: Geeks>