Како проверити да ли је датотека отворена или затворена у Питхону

How Check File Is Opened



Датотека се користи за трајно складиштење података. Рад са датотеком је уобичајен задатак сваког програмског језика. Многе уграђене функције постоје у Питхону за креирање, отварање, читање, писање и затварање датотеке. За чување података могу се креирати две врсте датотека. Ово су текстуалне датотеке и бинарне датотеке. Свака датотека се мора отворити пре читања или писања. Тхе опен () функција се користи у Питхону за отварање датотеке. Помоћу опен () функција је један од начина да проверите да ли је одређена датотека отворена или затворена. Ако је опен () функција отвара претходно отворену датотеку, а затим ИОЕррор ће се генерисати. Други начин да проверите да ли је датотека отворена или затворена је да проверите вредности датотеке затворено својство објекта за руковање датотекама. Користећи преименуј () функција је још један начин да проверите да ли је датотека отворена или затворена. У овом водичу приказани су различити начини провере отварања или затварања било које датотеке у Питхону.

Направите датотеку за проверу:

Можете користити било коју постојећу датотеку или креирати нову датотеку за тестирање примера кода приказаног у овом водичу. Нова текстуална датотека под називом цлиентс.ткт је креиран са следећим садржајем који ће се користити касније у следећем делу водича.







ИД Име Емаил
01 Јони Ливер [заштићена е -пошта]
02 Маник Хоссаин [заштићена е -пошта]
03 Неха Актер [заштићена е -пошта]
04 Јанатул Фердоус [заштићена е -пошта]
05 Хелал Уддин [заштићена е -пошта]



Пример-1: Проверите да ли је датотека отворена или не помоћу ИОЕррор

ИОЕррор генерише када се позове функција опен () да отвори датотеку која је претходно отворена. Направите питхон датотеку са следећом скриптом да бисте проверили да ли је датотека отворена или не помоћу покушај-осим блокирати. Овде ће се било који постојећи назив датотеке узети као улаз и отворити за читање. Затим се функција опен () поново позива да отвори исту датотеку која ће покренути ИОЕррор и одштампати поруку о грешци.



# Узмите назив датотеке да проверите
назив датотеке = улаз('Унесите било који постојећи назив датотеке: н')
# Отворите датотеку први пут помоћу функције опен ()
филеХандлер = отворен(назив документа,'р')
# Покушајте поново да отворите исту датотеку
покушати:
са отвореним('назив документа','р') каофајл:
# Одштампајте поруку о успеху
принт('Датотека је отворена за читање.')
# Повећајте грешку ако је датотека већ отворена
осим ИОЕррор:
принт('Датотека се већ отворила.')

Излаз:

Следећи излаз ће се појавити након извршавања горње скрипте. Овде, цлиентс.ткт постоји на тренутној локацији, а порука о грешци, Датотека се већ отворила, је штампао за ИОЕррор изузетак.





Пример-2: Проверите да ли је датотека затворена или не помоћу својства цлосед.

Вредност затворено својство ће бити тачно ако је било која датотека затворена. Направите питхон датотеку са следећом скриптом да бисте проверили да ли је датотека затворена или не постоји на тренутној локацији. Претходни пример скрипте ће генерисати грешку ако име датотеке преузето од корисника не постоји на тренутној локацији. Овај проблем је решен у овом примеру. Тхе ти модул се овде користи за проверу постојања имена датотеке која ће бити преузета од корисника. Функција цхецк_цлосед () је дефинисала да провери да ли је датотека затворена или неће, која ће бити позвана ако датотека постоји.



# Увезите ос модул да бисте проверили постојање датотеке
увоз
# Дрфине функција проверава да ли је датотека затворена или није
деф цхецк_цлосед():
акофилеХандлер.цлосед == Нетачно:
# Одштампајте поруку о успеху
принт('Датотека је отворена за читање.')
друго:
# Одштампајте поруку о грешци
принт('Датотека је затворена.')

# Узмите назив датотеке да проверите
назив датотеке = улаз('Унесите било који постојећи назив датотеке: н')
# Проверите да ли датотека постоји или не
акоос.патх.екистс(назив документа):
# Отворите датотеку за читање
филеХандлер = отворен(назив документа,'р')
# Позовите функцију
цхецк_цлосед()
друго:
# Одштампајте поруку ако датотека не постоји
принт('Фајл не постоји.')

Излаз:

Следећи излаз ће се појавити након извршавања горње скрипте. Овде, цлиентс.ткт постоји на тренутној локацији, а порука о успеху, Датотека је отворена за читање, је одштампано јер је враћена вредност затворене имовине Нетачно .

Пример-3: Проверите да ли је датотека отворена или не помоћу ОСЕррор-а

Тхе ОСЕррор генерише када се функција ренаме () позове више пута за датотеку која је већ отворена. Направите питхон датотеку са следећом скриптом да бисте проверили да ли је датотека отворена или затворена помоћу ОСЕррор . Модул ос је коришћен у скрипти за проверу постојања датотеке и преименовање датотеке. Када преименуј () функција се позива по други пут, ОСЕррор ће бити генерисан, а прилагођена порука о грешци ће бити одштампана.

# Увезите ос модул да бисте проверили постојање датотеке
увоз
# Подесите постојећи назив датотеке
назив датотеке ='цлиентс.ткт'
# Подесите ново име датотеке
ново име ='цустомерс.ткт'
# Проверите да ли датотека постоји или не
акоос.патх.екистс(назив документа):
покушати:
# Позовите функцију преименовања по први пут
ос.ренаме(назив датотеке, ново име)
# Позовите функцију преименовања по други пут
ос.ренаме(назив датотеке, ново име)
# Повећајте грешку ако се датотека отворила
осим ОСЕррор:
принт('Датотека је и даље отворена.')

друго:
# Одштампајте поруку ако датотека не постоји
принт('Фајл не постоји.')

Излаз:

Следећи излаз ће се појавити након извршавања горње скрипте. Овде, цлиентс.ткт постоји на тренутној локацији, а порука о грешци, Датотека је и даље отворена, је штампао јер је ОСЕррор изузетак је генерисан када је други преименуј () функција је извршена.

Закључак:

Када морамо да радимо са истом датотеком више пута у скрипти, неопходно је знати да ли је датотека отворена или затворена. Боље је позвати функцију цлосе () да бисте затворили датотеку након завршетка операције са датотеком. До грешке долази када се датотека отвори по други пут у истој скрипти без затварања. У овом водичу приказана су различита решења овог проблема помоћу једноставних примера који помажу корисницима питхона.