Файловый ввод-вывод¶
Обычно работа с файлами состоит из следующих этапов:
Открыть файл. При открытии следует указать режим: чтение или запись.
Выполнить чтение или запись данных.
Закрыть файл.
Рассмотрим функции для выполнения этих действий.
-
open(file_path, mode='r')¶ Открыть файл
file_pathв режимеmode. Функция возвращаетfile object. Полная сигнатура функции приведена в официальной документации: open. Режим может принимать значения:'r'— read, чтение'w'— write, запись
-
f.write(text)¶ Записать строку
textв файл.
-
f.close()¶ Закрыть файл
f.
Пример работы с файлом:
# Открываем файл для записи
out_file = open('data.txt', 'w')
# Пишем в файл две строки
out_file.write('Hello\n')
out_file.write('World\n')
# Закрываем файл
out_file.close()
# Снова открываем этот же файл, но уже для чтения
in_file = open('data.txt', 'r')
# Файл — итерируемый объект. Следовательно, для
# его построчного чтения можно использовать цикл for
for line in in_file:
print(f'Got line: {line}')
in_file.close()
Задачи¶
Разработать приложение, которое записывает в файл все строки, введенные пользователем. Признак конца ввода — пустая строка. Пример:
Введите имя файла: data.txt Начните вводить строки > one > two > three > Файл записан.
После выполнения программы должен появиться файл
data.txt, содержащий три строки:one two three
Разработать приложение для нумерации строк в файле. Приложение принимает на вход имя файла и выводит его построчно, добавляя к каждой строке ее номер. Если использовать файл, созданный в предыдущей задаче, то результат работы программы будет выглядеть так:
Введите имя файла: data.txt 1 one 2 two 3 three
Используйте метод строки
rstrip(), чтобы избавиться от лишних переносов сток. После этого результат работы программы примет вид:Введите имя файла: data.txt 1 one 2 two 3 three
Разработать приложение для разделения файла на части. Приложение принимает на вход имя файла для разделения и целое число N. На выходе у приложения множество файлов, каждый из которых содержит не более, чем N строк из исходного файла.
Пусть на вход программе подается файл
data.txt, со следующим текстом:one two three four five six seven eight nine ten
Будем разделять его на несколько файлов, в каждом из которых окажется не более трех строк:
Введите имя входного файла: data.txt Введите максимальное количество строк: 3
После выполнения программы должны быть созданы файлы
1.txt,2.txtи так далее. В файле1.txtбудут сроки:one two three
В файле
2.txt:four five six
И так далее.
Разработать приложение для объединения файлов. Приложение принимает на вход имена файлов для объединения (можно использовать файлы, полученные из предыдущего задания) и имя выходного файла.
Дополнительные задачи¶
Разработайте приложение, которое выводит
Nпервых строк файла.Разработайте приложение, которое выводит
Nпоследних строк файла.