Поиск по сайту:
Человеческий разум, предоставленный самому себе, не заслуживает доверия (Ф. Бэкон).

Как проверить, открыт или закрыт файл в 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

 

Читать  Как создавать представления в Django?

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

Вывод:

Читать  Что делать, если вам будет заблокирован доступ администратора WordPress (wp-admin)

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

Читать  4 совета по оптимизации производительности для более быстрого кода на Python

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

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


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

**ссылки nofollow

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

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


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

Спасибо!

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