Читання файлів¶
У Python є кілька варіантів читання файлу:
- перебирати файл у циклі for
- метод
read
- зчитує вміст файлу в рядок - метод
readline
- зчитує один рядок - метод
readlines
- зчитує рядки файлу та створює список із рядків
Робота із файлом в циклі for¶
Найпоширеніший варіант роботи з файлом – використання об'єкту file у циклі for:
В цьому випадку файл читається рядок за рядком, отримуючи новий рядок на кожній ітерації циклу for:
read¶
Метод read – зчитує весь файл в один рядок.
Приклад використання методу read:
In [1]: f = open('data.txt')
In [2]: f.read()
Out[2]: 'line1\nline2\nline3\nline4\nline5\nline6\nline7\n'
In [3]: f.read() # (1)
Out[3]: ''
- При повторному читанні файлу в 3 рядку відображається порожній рядок. Так відбувається через те, що після першого виклику методу read, зчитується весь файл. І після того, як файл було зчитано, курсор залишається в кінці файлу. Керувати положенням курсору можна за допомогою методу seek.
readline¶
Файл можна читати рядок за рядком за допомогою методу readline
.
Кожен виклик методу readline, читає наступний рядок файлу. Коли рядки закінчуються, readline повертає порожній рядок:
readlines¶
Якщо потрібно отримати рядки файлу, але без перекладу рядка в кінці, можна
скористатися методом split і як роздільник вказати символ \n
:
In [2]: f = open('data.txt')
In [3]: f.read().split('\n')
Out[3]: ['line1', 'line2', 'line3', 'line4', 'line5', 'line6', 'line7', '']
Зауважте, що останній елемент списку - порожній рядок. Якщо перед виконанням split, скористатися методом rstrip, список буде без порожнього рядка наприкінці:
In [5]: f = open('data.txt')
In [6]: f.read().strip().split('\n')
Out[6]: ['line1', 'line2', 'line3', 'line4', 'line5', 'line6', 'line7']
Або скористатися методом рядків splitlines:
In [11]: f = open('data.txt')
In [12]: f.read().splitlines()
Out[12]: ['line1', 'line2', 'line3', 'line4', 'line5', 'line6', 'line7']
seek¶
Досі файл щоразу доводилося відкривати заново, щоб прочитати його знову. Так відбувається через те, що після методів читання курсор знаходиться в кінці файлу. І повторне читання повертає порожній рядок.
Щоб знову прочитати інформацію з файлу, потрібно скористатися методом seek, який переміщує курсор у потрібне положення.
Приклад відкриття файлу та читання вмісту:
In [13]: f = open('data.txt')
In [14]: f.read()
Out[14]: 'line1\nline2\nline3\nline4\nline5\nline6\nline7\n'
Якщо викликати ще раз метод read, повертається порожній рядок:
За допомогою методу seek можна перейти на початок файлу (0 означає початок файлу):
Після того, як за допомогою seek курсор був переведений на початок файлу, можна знову зчитувати вміст: