Для работы с файлами используется специальный объект файла, который содержит в себе функции для открытия, закрытия файлов, чтения и записи данных. Функция 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()
Более подробные сведения здесь