Поиск по сайту:
Хорошее начало — половина дела (Платон).

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

24.07.2021
Python 3 - Обзор

Файл используется для постоянного хранения данных. Работа с файлом — очень распространенная задача любого языка программирования. В 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

 

Читать  Сколько времени требуется, чтобы выучить Python?

Пример-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("Файл не существует.")

Вывод:

Читать  XOR двух строк в Python

Здесь 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.

Читать  Как исправить ошибку 404 или Not Found («не найдено»)

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (3 оценок, среднее: 3,67 из 5)
Загрузка...
Поделиться в соц. сетях:


0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest

**ссылки nofollow

0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии

Это может быть вам интересно


Рекомендуемое
Мы знаем, что позитивное поведение, особенно связанное с социальной компетентностью,…

Спасибо!

Теперь редакторы в курсе.