Введение в язык Питон

         

Операции с файлами.


В Питоне широко используются файлы, для операции с данными, которые предполагается хранить длительное время. Для работы с файлами используется специальный объект файла, который содержит в себе функции для открытия, закрытия файлов, чтения и записи данных.

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



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

Двоичные файлы обеспечивают более быстрый доступ к данным, но бывают не переносимы и, к тому же, их сложно редактировать и просматривать. Текстовые файлы применимы в большинстве случаев, так как они переносимы, легко просматриваются и редактируются, но они медленнее двоичных и могут отображать корректно только символы набора ASCII.

>>> f=open('/tmp/workfile', 'w') >>> print f <open file '/tmp/workfile', mode 'w' at 80a0960>

Метод read([число_байт]). Данный метод читает из файла, открытого для чтения число байтов, указанных в качестве аргумента. Если метод вызывается без параметров, то читается весь файл, если файл был прочитан до конца(встретился символ EOF), то метод read() возвращает пустую строку:


>>> f.read() 'This is the entire file.\n' >>> f.read() ''

Метод readline() читает одну строку файла до символа перевода строки(включая сам символ \n). Если строка состоит только из символа перевода строки, то метод readline() возвращает пустую строку. Если в конце файла нет пустой строки с символом \n, то возвращаемый результат неопределён(этого допускать нельзя):

>>> f.readline() 'This is the first line of the file.\n'

>>> f.readline() 'Second line of the file\n'

>>> f.readline() ''

Метод readlines([размер_строки]) читает все строки файла в список. Читаются только законченные строки. Необязательный параметр размер_строки дополняет читает строку, и если она меньше указанной длины читает дальше, до достижения указанного числа символов, такой приём эффективен для чтения очень больших файлов построчно без необходимости размещения его в памяти:

>>> f.readlines()

['This is the first line of the file.\n', 'Second line of the file\n']

Метод write(строка) пишет в файл указанную строку, ничего при этом не возвращая:

>>> f.write('This is a test\n')

Метод seek(на_сколько_байт[, откуда]) перемещает указатель текущего положения файла на заданное количество байт от позиции, указанной вторым аргументом:

0(по умолчанию) 1 2
начало файла текущая позиция в файле конец файла
При этом, число байт для перемещения может быть как положительным, так и отрицательным(назад).

Метод tell() возвращает текущую позицию в файле:

>>> f=open('/tmp/workfile', 'r+')

>>> f.write('0123456789abcdef')

>>> f.seek(5) # Переход к шестому байту от начала

>>> f.read(1)

'5'

>>> f.seek(-3, 2) # Переход к третьему байту до конца файла

>>> f.read(1)

'd'

Метод close() закрывает объект файла, перенося все сделанные в нём изменения на диск, возвращая ресурсы операционной системе. Обязательно закрывайте все файлы, сто больше не используете, т.к. не закрытый файл может привести к потере данных. После закрытия обращение к объекту файла автоматически вызывает ошибку


Содержание раздела