'file.txt'
, который используется в примерах выглядит так (в конце есть перевод строки):
1 2 3 wait what 4
file_in = open('file.txt', 'r') # Параметр 'r' можно опустить: он используется по умолчанию
# Если файл не существует, выпадет исключение (ошибка выполнения)
Второй, более безопасный способ открыть файл — использовать with
:
with open('file.txt', 'r') as file_in:
contents = file_in.read()
contents
Эти странные символы '\n'
означают перевод строки
with open('file.txt', 'r') as file_in:
line = file_in.readline()
line
line = line.strip() # Избавляемся от символа перевода строки
line
Можно считать не одну строку, а две или сколько угодно
with open('file.txt', 'r') as file_in:
first_line = file_in.readline()
second_line = file_in.readline()
third_line = file_in.readline()
line, second_line, third_line
Конструкция file_in.readline().strip()
аналогична input()
, только чтение происходит из файла, а не из стандартного ввода
with open('file.txt', 'r') as file_in:
lines = file_in.readlines()
lines
Используем генератор списка, чтобы избавиться от символов перевода строки:
lines_stripped = [line.strip() for line in lines]
lines_stripped
Этот способ загружает в память строки по мере надобности и не считывает весь файл сразу, в отличие от readlines()
with open('file.txt', 'r') as file_in:
for line in file_in: # Обращаемся с файлом, как с итератором: проходимся циклом по всем его элементам
print(line) # Чтобы не было лишних переносов, нужно использовать strip
Если не использовать with
, то после того, как мы закончили работать с файлом, его надо закрыть
file_in = open('file.txt', 'r')
# Здесь делаем что-то с файлом
file_in.close() # Закрываем файл
file_out = open('file_out.txt', 'w') # Если файл существует, он будет перезаписан. Если нет, то будет создан.
Самый удобный способ — использоваь print()
с параметром file
:
print('Hello', file=file_out)
print(1, 2, 3, file=file_out)
file_out.close() # В конце нужно обязательно закрыть файл, иначе ничего не запишется
Здесь тоже можно использовать with
:
with open('file_out.txt', 'w') as file_out:
print('Hello', file=file_out)
print(1, 2, 3, file=file_out)
# Здесь не надо специально закрывать файл, with сделает это за нас
Вместо print()
можно использовать file_out.write()
, но это менее удобно потому что write()
принимает только строку, не ставит переносы строк сам, и ему нельзя настроить параметры sep
и end
, как в print()
with open('file_out.txt', 'w') as file_out:
file_out.write('Hello\n') # Перенос строки нужно указывать отдельно