Работа с файлами в Python

Для работы с файлами используется специальный объект файла, который содержит в себе функции для открытия, закрытия файлов, чтения и записи данных. Функция open(имя, режим) создает файловый объект для работы с файлами. Функция принимает два параметра: строку, содержащую путь к файлу (может быть абсолютным или относительным) и режим открытия файла. Режим открытия файла определяет допустимые операции доступа к файлу:

w   Открыть файл для записи. Если такой файл уже существует,
    то его содержимое исчезает(если это возможно).
r   Открыть файл только для чтения.
a   Открыть файл для добавления, т.е. записи в конец файла. 
    Предыдущее содержимое файла сохраняется.
r+  Открыть файл для записи/чтения, содержимое файла сохраняется.
w+  Открыть файл для записи/чтения, содержимое файла исчезает(см w).
r+b Открыть двоичный (если такие файлы поддерживаются операционной
    системой) файл для записи/чтения, содержимое файла сохраняется.
w+b Открыть двоичный файл для записи/чтения, содержимое файла исчезает(см w).
rb  Открыть двоичный файл только для чтения.
wb  Открыть двоичный файл для записи. Если такой файл уже существует, 
    то его содержимое исчезает(если это возможно).

Например:

f = open('/tmp/workfile', 'w')

Параметр «режим» необязателен: если он опущен — предполагается, что он равен 'r'. Перечислим некоторые методы чтения из файла и записи в файл:

  • Метод read([число_байт]). Данный метод читает из файла, открытого для чтения число байтов, указанных в качестве аргумента. Если метод вызывается без параметров, то читается весь файл, если файл был прочитан до конца (встретился символ EOF), то метод read() возвращает пустую строку.
  • Метод readline() читает одну строку файла до символа перевода строки (включая сам символ \n). Если строка состоит только из символа перевода строки, то метод readline() возвращает пустую строку. (Если в конце файла нет пустой строки с символом \n, то возвращаемый результат неопределён).
  • Метод readlines([размер_строки]) читает все строки файла в список. (Т. е., каждая строка является элементом списка). Читаются только законченные строки. Необязательный параметр размер_строки дополняет читаемую строку, и если она меньше указанной длины читает дальше, до достижения указанного числа символов.
  • Метод write(строка) пишет в файл указанную строку, ничего при этом не возвращая.
  • Метод seek(на_сколько_байт[, откуда]) перемещает указатель текущего положения файла на заданное количество байт от позиции, указанной вторым аргументом. (Значение 0 параметра «откуда» — смещение от начала файла, значение 1 применяется для текущей позиции в файле, а значение 2 в качестве точки отсчёта — конец файла. Параметр «откуда» может быть опущен и по умолчанию устанавливается в 0, используя начало файла в качестве точки отсчёта.)

Примечание. При работе с текстовыми файлами (открытыми без символа b в строке режима), выполнять позиционирование (seek) позволяется только от начала файла (за исключением прокрутки в конец файла с использованием seek(0, 2)).
В первой строке файла f_in записаны два целых числа через пробел. Записать во второй файл (f_out) сумму этих двух чисел.

f_in  = open('sum.in',  'r') # объект связан с файлом из которого будем получать данные
f_out = open('sum.out', 'w') # объект связан с файлом в который будем записывать
# Считываем строку файла при помощи метода readline(),
# результат разбиваем на поля по пробельным символам методом split()
# и записываем в список InputData
InputData = f_in.readline().split()
# Теперь в элементах списка InputData[0] и InputData[1]
# записаны два входных числа в виде строк.
# Преобразуем их к типу int и запишем их сумму в переменную Answer
Answer = int(InputData[0]) + int(InputData[1])
# Выведем результат в файл, но перед этим "обернем" переменную Answer в тип строки (str)
f_out.write(str(Answer))
# Закроем файлы
f_in.close()
f_out.close()

Добавить комментарий