Kuidas kontrollida, kas fail on Pythonis avatud või suletud

How Check File Is Opened

Faili kasutatakse andmete püsivaks salvestamiseks. Failiga töötamine on iga programmeerimiskeele väga levinud ülesanne. Faili loomiseks, avamiseks, lugemiseks, kirjutamiseks ja sulgemiseks on Pythonis palju sisseehitatud funktsioone. Andmete salvestamiseks saab luua kahte tüüpi faile. Need on teksti- ja binaarfailid. Kõik failid tuleb enne lugemist või kirjutamist avada. The avatud () funktsiooni kasutatakse Pythonis faili avamiseks. Kasutades avatud () funktsioon on üks võimalus kontrollida, kas konkreetne fail on avatud või suletud. Kui avatud () funktsioon avab varem avatud faili, seejärel an IOError genereeritakse. Teine viis faili avamise või sulgemise kontrollimiseks on faili väärtuste kontrollimine suletud failihalduri objekti omadus. Kasutades ümber nimetada () funktsioon on veel üks viis faili avamise või sulgemise kontrollimiseks. Selles õpetuses on näidatud erinevaid viise, kuidas kontrollida faili avamist või sulgemist Pythonis.

Looge kontrollimiseks fail:

Selles õpetuses näidatud koodi testimiseks võite kasutada mis tahes olemasolevat faili või luua uue faili. Uus tekstifail nimega kliendid.txt on loodud järgmise sisuga, mida hiljem õpetuse järgmises osas kasutada.



ID nimi E -post
01 Jony Liver [e -post kaitstud]
02 Manik Hossain [e -post kaitstud]
03 Neha Akter [e -post kaitstud]
04 Janatul Ferdous [kaitstud e -postiga]
05 Helal Uddin [kaitstud e -postiga]



Näide 1: kontrollige faili avamist või mitte, kasutades IOErrorit

IOError genereerib, kui funktsiooni open () kutsutakse avama varem avatud faili. Looge järgmise skriptiga pythoni fail, et kontrollida, kas fail on avatud või mitte proovige-välja arvatud blokeerida. Siin võetakse kõik olemasolevad failinimed sisendiks ja avatakse lugemiseks. Järgmisena kutsutakse uuesti üles () funktsioon, et avada sama fail, mis avab IOError ja prindib veateate.



# Võtke kontrollimiseks failinimi
failinimi = sisend('Sisestage olemasolev failinimi: n')
# Avage fail esmakordselt funktsiooni open () abil
fileHandler = avatud(faili nimi,'r')
# Proovige sama faili uuesti avada
proovige:
lahtisega('faili nimi','r') nagufail:
# Printige eduteade
printida('Fail on lugemiseks avatud.')
# Tõstke viga, kui fail on varem avatud
välja arvatud IOError:
printida('Fail on juba avatud.')

Väljund:

Pärast ülaltoodud skripti täitmist ilmub järgmine väljund. Siin, kliendid.txt on praeguses asukohas olemas ja veateade, Fail on juba avatud, jaoks on trükitud IOError erand.

Näide-2: kontrollige, kas fail on suletud või mitte, kasutades suletud atribuuti.

Väärtus suletud atribuut on tõene, kui mõni fail suletakse. Looge järgmise skriptiga pythoni fail, et kontrollida, kas fail on praeguses asukohas suletud või mitte. Eelmine näiteskript tekitab tõrke, kui kasutajalt võetud failinime praeguses asukohas ei eksisteeri. See probleem on selles näites lahendatud. The sina moodulit kasutatakse siin kasutajalt võetud failinime olemasolu kontrollimiseks. Funktsioon check_closed () on määratlenud, et kontrollida, kas fail on suletud või mitte, helistatakse faili olemasolu korral.



# Importige osamoodul faili olemasolu kontrollimiseks
import
# Drfine -funktsiooni kontrollimine, kas fail on suletud või mitte
def check_closed():
kuifileHandler.closed == Vale:
# Printige eduteade
printida('Fail on lugemiseks avatud.')
muidu:
# Printige veateade
printida('Fail on suletud.')

# Võtke kontrollimiseks failinimi
failinimi = sisend('Sisestage olemasolev failinimi: n')
# Kontrollige, kas fail on olemas või mitte
kuios.path.exist(faili nimi):
# Avage fail lugemiseks
fileHandler = avatud(faili nimi,'r')
# Helistage funktsioonile
check_closed()
muidu:
# Printige teade, kui faili pole olemas
printida('Faili ei ole olemas.')

Väljund:

Pärast ülaltoodud skripti täitmist ilmub järgmine väljund. Siin, kliendid.txt on praeguses asukohas olemas ja edusõnum, Fail on lugemiseks avatud, on trükitud, sest suletud vara väärtus tagastati Vale .

Näide-3: kontrollige OSError abil, kas fail on avatud või mitte

The OSViga genereerib, kui funktsiooni rename () kutsutakse juba avatud faili jaoks mitu korda. Looge järgmise skriptiga pythoni fail, et kontrollida faili avamist või sulgemist OSViga . Skriptis on os -moodulit kasutatud faili olemasolu kontrollimiseks ja faili ümbernimetamiseks. Kui ümber nimetada () funktsiooni kutsutakse teist korda, genereeritakse OSError ja prinditakse kohandatud veateade.

# Importige osamoodul faili olemasolu kontrollimiseks
import
# Määrake olemasolev failinimi
failinimi =„customers.txt”
# Määrake uus failinimi
uus nimi =„customers.txt”
# Kontrollige, kas fail on olemas või mitte
kuios.path.exist(faili nimi):
proovige:
# Helistage esmakordselt ümbernimetamise funktsioonile
os.nimi(failinimi, uus nimi)
# Helistage ümbernimetamise funktsioonile teist korda
os.nimi(failinimi, uus nimi)
# Tõstke viga, kui fail on avatud
välja arvatud OSViga:
printida('Fail on endiselt avatud.')

muidu:
# Printige teade, kui faili pole olemas
printida('Faili ei ole olemas.')

Väljund:

Pärast ülaltoodud skripti täitmist ilmub järgmine väljund. Siin, kliendid.txt on praeguses asukohas olemas ja veateade, Fail on endiselt avatud, on trükitud, sest OSViga erand on tekkinud, kui teine ümber nimetada () funktsioon on täidetud.

Järeldus:

Kui peame sama failiga skriptis mitu korda töötama, on oluline teada, kas fail on avatud või suletud. Pärast faili toimingu lõpetamist on parem sulgeda faili sulgemiseks funktsioon close (). Viga ilmneb siis, kui fail avatakse teist korda samas skriptis ilma seda sulgemata. Selles õpetuses on näidatud selle probleemi erinevaid lahendusi, kasutades pythoni kasutajate abistamiseks lihtsaid näiteid.