Чтение из файлов в Python
Открыл как книгу и прочитал - что сложного?
В Python есть 2 способа чтения файлов - с помощью итерации и с помощью методов. Учитывайте, что при чтении файла перемещается виртуальный “курсор” в файле.
Чтение с помощью методов
Есть несколько методов, позволяющих читать файлы:
-
read(size)- читаетsizeбайтов; еслиsizeне указан, читает весь файл (сдвигает курсор)with open('file.txt', 'r') as file: content: str = file.read() # весь файл print(content)with open('file.txt', 'r') as file: first: str = file.read(1) # первый символ print(first) # L second: str = file.read(1) # второй символ print(second) # o -
readline()- читаетsizeбайтов из текущей строки, если указать больше длины строки, то функция просто дочитает до конца; еслиsizeне указан, читает с текущей позиции до конца строки (в конце файла всегда будет возвращаться пустая строка)with open('file.txt', 'r') as file: line: str = file.readline() # первая строка print(line) # abc line: str = file.readline() # вторая строка print(line) # defwith open('file.txt', 'r') as file: first: str = file.readline(1) # 1 символ из первой строки print(first) line: str = file.readline() # остальные символы print(line) -
readlines()- читает все строки из файла, возвращая их в виде спискаreadlines(size)- читает все строки из файла, пока не достигнетsizeбайтовwith open('file.txt') as file: lines: list[str] = file.readlines() # возвращает список строк print(lines) # ["abc\n", "def\n", "ghi"]with open('file.txt') as file: lines: list[str] = file.readlines(10) # чтение строк, пока размер не достигнет 10 байтов print(lines) -
seek(offset, from)- перемещает курсор в файле наoffsetпозиции (отрицательные значения принимаются) относительноfrom(0 - начало (по умолчанию), 1 - текущая позиция, 2 - конец)with open('file.txt') as file: file.seek(10) content = file.read() # с 10 позиции print(content) -
tell() -> int- возвращает текущую позицию курсора в файлеwith open('file.txt') as file: content = file.read() print(content) position = file.tell() print(position) # int
Чтение с помощью итерации
Можно получить список строк:
with open('file.txt') as file:
lines: list[str] = list(file) # ["abc\n", "def\n", "ghi"]
Или с помощью цикла for:
with open('file.txt') as file:
for line in file:
print(line, end='')