Файловый ввод-вывод

Обычно работа с файлами состоит из следующих этапов:

  1. Открыть файл. При открытии следует указать режим: чтение или запись.

  2. Выполнить чтение или запись данных.

  3. Закрыть файл.

Рассмотрим функции для выполнения этих действий.

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()

Задачи

  1. Разработать приложение, которое записывает в файл все строки, введенные пользователем. Признак конца ввода — пустая строка. Пример:

    Введите имя файла: data.txt
    Начните вводить строки
    > one
    > two
    > three
    >
    
    Файл записан.
    

    После выполнения программы должен появиться файл data.txt, содержащий три строки:

    one
    two
    three
    
  2. Разработать приложение для нумерации строк в файле. Приложение принимает на вход имя файла и выводит его построчно, добавляя к каждой строке ее номер. Если использовать файл, созданный в предыдущей задаче, то результат работы программы будет выглядеть так:

    Введите имя файла: data.txt
    
    1 one
    
    2 two
    
    3 three
    

    Используйте метод строки rstrip(), чтобы избавиться от лишних переносов сток. После этого результат работы программы примет вид:

    Введите имя файла: data.txt
    1 one
    2 two
    3 three
    
  3. Разработать приложение для разделения файла на части. Приложение принимает на вход имя файла для разделения и целое число 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
    

    И так далее.

  4. Разработать приложение для объединения файлов. Приложение принимает на вход имена файлов для объединения (можно использовать файлы, полученные из предыдущего задания) и имя выходного файла.

Дополнительные задачи

  1. Разработайте приложение, которое выводит N первых строк файла.

  2. Разработайте приложение, которое выводит N последних строк файла.