Закрытие файлов#

Примечание

В реальной жизни для закрытия файлов чаще всего используется конструкция with. Её намного удобней использовать, чем закрывать файл явно. Но, так как в жизни можно встретить и метод close, в этом разделе рассматривается как его использовать.

После завершения работы с файлом, его нужно закрыть. В некоторых случаях Python может самостоятельно закрыть файл. Но лучше на это не рассчитывать и закрывать файл явно.

close#

Метод close встречался в разделе запись файлов. Там он был нужен для того, чтобы содержимое файла было записано на диск.

Для этого, в Python есть отдельный метод flush. Но так как в примере с записью файлов, не нужно было больше выполнять никаких операций, файл можно было закрыть.

Откроем файл r1.txt:

In [1]: f = open('r1.txt', 'r')

Теперь можно считать содержимое:

In [2]: print(f.read())
!
service timestamps debug datetime msec localtime show-timezone year
service timestamps log datetime msec localtime show-timezone year
service password-encryption
service sequence-numbers
!
no ip domain lookup
!
ip ssh version 2
!

У объекта file есть специальный атрибут closed, который позволяет проверить, закрыт файл или нет. Если файл открыт, он возвращает False:

In [3]: f.closed
Out[3]: False

Теперь закрываем файл и снова проверяем closed:

In [4]: f.close()

In [5]: f.closed
Out[5]: True

Если попробовать прочитать файл, возникнет исключение:

In [6]: print(f.read())
------------------------------------------------------------------
ValueError                       Traceback (most recent call last)
<ipython-input-53-2c962247edc5> in <module>()
----> 1 print(f.read())

ValueError: I/O operation on closed file