Как проверить, открыт или закрыт файл в Python

Файл используется для постоянного хранения данных. Работа с файлом — очень распространенная задача любого языка программирования. В Python существует множество встроенных функций для создания, открытия, чтения, записи и закрытия файла. Для хранения данных можно создать два типа файлов. Это текстовые файлы и двоичные файлы. Любой файл необходимо открыть перед чтением или записью. Функция open() используется в Python для открытия файла. Использование функции open() — это один из способов проверить, открыт или закрыт конкретный файл. Если функция open() открывает ранее открытый файл, генерируется ошибка IOError. Другой способ проверить, открыт или закрыт файл — это проверить значения свойства closed объекта обработчика файлов. С использованием функции rename() — еще один способ проверить, открыт или закрыт файл. В этой статье показаны различные способы проверки открытия или закрытия любого файла в Python.

 

Создайте файл для проверки:

Вы можете использовать любой существующий файл или создать новый файл, чтобы протестировать пример кода, показанный в этой статьи. Был создан новый текстовый файл с именем clients.txt со следующим содержимым для использования в следующей части статьи.



ID     Name                           Email

01     Andrey Ex                   Andrey***@gmail.com

02     Max Terminator              Max***@gmail.com

03    Alex Murphy                  Alex***@gmail.com


 

Пример-1: проверьте, открыт файл или нет, с помощью IOError

IOError генерируется при вызове функции open() для открытия файла, который был открыт ранее. Создайте файл python со следующим сценарием, чтобы проверить, открыт ли файл или нет, с помощью блока try-except. Здесь любое существующее имя файла будет принято в качестве входных и открыто для чтения. Затем снова вызывается функция open(), чтобы открыть тот же файл, который вызовет ошибку IOError и распечатает сообщение об ошибке.

# Введите имя файла для проверки

filename = input("Введите любое существующее имя файла:n")

# Откройте файл в первый раз с помощью функции open()

fileHandler = open(filename, "r")

# Попробуйте открыть файл с таким же именем снова

try:

with open("filename", "r") as file:

# Распечатать сообщение об успешном завершении

print("Файл открыт для чтения.")

# Вызовите ошибку, если файл был открыт раньше

except IOError:

print("Файл уже открыт")

Вывод:

Здесь в текущем расположении существует файл clients.txt, а сообщение об ошибке «Файл уже открыт» было напечатано для исключения IOError.

 

Пример-2: проверьте, закрыт ли файл, используя свойство closed.

Значение свойства closed будет истинным, если какой-либо файл закрыт. Создайте файл python с помощью следующего сценария, чтобы проверить, закрыт ли файл в текущем местоположении. Предыдущий пример сценария выдаст ошибку, если имя файла, полученное от пользователя, не существует в текущем местоположении. В этом примере эта проблема решена. Модуль os используется здесь для проверки существования имени файла, которое будет взято у пользователя. Функция check_closed() определена для проверки того, закрыт ли файл или нет, которая будет вызываться, если файл существует.

# Импортировать модуль os для проверки существования файла

import os

# Функция Drfine проверяет, закрыт ли файл или нет

def check_closed():

if fileHandler.closed == False:

# Распечатать сообщение об успешном завершении

print("Файл открыт для чтения.")

else:

# Распечатать сообщение об ошибке

print(" Файл закрыт.")



# Взять имя файла для проверки

filename = input(" Введите любое существующее имя файла:  n ")

# Проверить, существует

if os.path.exists(filename):

# Открыть файл для чтения

fileHandler = open(filename, "r")

# Вызвать функцию

check_closed()

else:

# Вывести сообщение, если файл не существует

print("Файл не существует.")

Вывод:

Здесь client.txt существует в текущем месте, и сообщение об успешном завершении «Файл открыт для чтения» напечатано, поскольку значение свойства closed вернуло False.

 

Пример-3: проверьте, открыт файл или нет, с помощью OSError

OSError генерирует , когда функция переименования() вызывается более чем один раз для файла , который открыт уже. Создайте файл Python со следующим сценарием, чтобы проверить, открыт или закрыт файл с помощью OSError. Модуль os использовался в сценарии для проверки существования файла и его переименования. Когда функция rename() вызывается во второй раз, будет сгенерирована ошибка OSError, и будет напечатано настраиваемое сообщение об ошибке.

# Импортировать модуль os для проверки существования файла

import os

# Установить существующее имя файла

filename = 'clients.txt'

# Установить новое имя файла

newname = 'customers.txt'

# Проверить, существует ли файл или нет,

if os.path.exists(filename):

try:

# Вызов функции переименования в первый раз

os.rename(filename, newname)

# Вызов функции переименования во второй раз

os.rename(filename, newname)

# Вызов исключения при ошибки, если если файл открыт

except OSError:

print («Файл все еще открыт».)



else:

# Вывести сообщение, если файл не существует

print("Файл не существует.")

Вывод:

Здесь clients.txt существует в текущем местоположении, и сообщение об ошибке, “File is still opened,” напечатал , потому что OSError исключение генерируется , когда вторая функция rename() выполнена.

 

Вывод:

Когда нам нужно работать с одним и тем же файлом в сценарии несколько раз, важно знать, открыт ли файл или закрыт. Лучше вызвать функцию close(), чтобы закрыть файл после завершения операции с файлом. Ошибка возникает, когда файл открывается во второй раз в том же скрипте, не закрывая его. В этой статье на простых примерах показаны различные решения этой проблемы, которые помогут пользователям Python.



2021-07-24T10:29:04
Python