Kako provjeriti je li datoteka otvorena ili zatvorena u Pythonu

How Check File Is Opened

Datoteka se koristi za trajno spremanje podataka. Rad s datotekom vrlo je čest zadatak svakog programskog jezika. Mnoge ugrađene funkcije postoje u Pythonu za stvaranje, otvaranje, čitanje, pisanje i zatvaranje datoteke. Za pohranu podataka mogu se stvoriti dvije vrste datoteka. To su tekstualne datoteke i binarne datoteke. Bilo koju datoteku morate otvoriti prije čitanja ili pisanja. The otvorena() funkcija se koristi u Pythonu za otvaranje datoteke. Koristiti otvorena() Funkcija je jedan od načina provjere otvaranja ili zatvaranja određene datoteke. Ako je otvorena() funkcija otvara prethodno otvorenu datoteku, a zatim IOError će se generirati. Drugi način provjere otvaranja ili zatvaranja datoteke je provjeravanje vrijednosti datoteke zatvoreno svojstvo objekta rukovatelja datotekama. Korištenje preimenovati() funkcija je još jedan način provjere otvaranja ili zatvaranja datoteke. U ovom vodiču prikazani su različiti načini provjere otvaranja ili zatvaranja bilo koje datoteke u Pythonu.

Napravite datoteku za provjeru:

Možete upotrijebiti bilo koju postojeću datoteku ili stvoriti novu datoteku za testiranje primjera koda prikazanog u ovom vodiču. Nova tekstualna datoteka pod nazivom clients.txt je kreiran sa sljedećim sadržajem koji će se koristiti kasnije u sljedećem dijelu vodiča.



ID Naziv Email
01 Jony Liver [zaštićena e -pošta]
02 Manik Hossain [zaštićena e -pošta]
03 Neha Akter [zaštićena e -pošta]
04 Janatul Ferdous [zaštićena e -pošta]
05 Helal Uddin [zaštićena e -pošta]



Primjer-1: Provjerite je li datoteka otvorena ili ne pomoću IOError

IOError generira kada se pozove funkcija open () za otvaranje datoteke koja je već bila otvorena. Napravite python datoteku sa sljedećom skriptom kako biste provjerili je li datoteka otvorena ili ne pomoću pokušaj-osim blok. Ovdje će se bilo koji postojeći naziv datoteke uzeti kao ulaz i otvoriti za čitanje. Zatim se ponovno poziva funkcija open () za otvaranje iste datoteke koja će pokrenuti IOError i ispisati poruku o pogrešci.



# Uzmite naziv datoteke za provjeru
naziv datoteke = ulaz('Unesite bilo koji postojeći naziv datoteke: n')
# Otvorite datoteku prvi put pomoću funkcije open ()
fileHandler = otvoren(naziv datoteke,'r')
# Pokušajte ponovo otvoriti istu datoteku
probati:
s otvorenim('naziv datoteke','r') kaodatoteka:
# Ispišite poruku uspjeha
ispisati('Datoteka je otvorena za čitanje.')
# Povećajte pogrešku ako je datoteka prije otvorena
osim IOError:
ispisati('Datoteka se već otvorila.')

Izlaz:

Sljedeći izlaz pojavit će se nakon izvršavanja gornje skripte. Ovdje, clients.txt postoji na trenutnoj lokaciji, a poruka o pogrešci, Datoteka se već otvorila, je tiskao za IOError iznimka.

Primjer-2: Provjerite je li datoteka zatvorena ili nije pomoću svojstva closed.

Vrijednost zatvoreno svojstvo će biti točno ako je bilo koja datoteka zatvorena. Izradite python datoteku sa sljedećom skriptom kako biste provjerili je li datoteka zatvorena ili ne postoji na trenutnom mjestu. Prethodni primjer skripte generirat će pogrešku ako ime datoteke preuzeto od korisnika ne postoji na trenutnoj lokaciji. Ovaj je problem riješen u ovom primjeru. The vas modul se ovdje koristi za provjeru postojanja naziva datoteke koji će biti preuzet od korisnika. Funkcija check_closed () definirala je provjeru je li datoteka zatvorena ili neće, koja će se pozvati ako datoteka postoji.



# Uvezite os modul za provjeru postojanja datoteke
uvoz
# Drfine funkcija provjerite je li datoteka zatvorena ili nije
def check_closed():
akofileHandler.closed == Netočno:
# Ispišite poruku uspjeha
ispisati('Datoteka je otvorena za čitanje.')
drugo:
# Ispišite poruku o pogrešci
ispisati('Datoteka je zatvorena.')

# Uzmite naziv datoteke za provjeru
naziv datoteke = ulaz('Unesite bilo koji postojeći naziv datoteke: n')
# Provjerite postoji li datoteka ili ne
akoos.puta.postoji(naziv datoteke):
# Otvorite datoteku za čitanje
fileHandler = otvoren(naziv datoteke,'r')
# Pozovite funkciju
ček_zatvoreno()
drugo:
# Ispišite poruku ako datoteka ne postoji
ispisati('Mapa ne postoji.')

Izlaz:

Sljedeći izlaz pojavit će se nakon izvršavanja gornje skripte. Ovdje, clients.txt postoji na trenutnoj lokaciji, a poruka o uspjehu, Datoteka je otvorena za čitanje, je ispisao jer je vraćena vrijednost zatvorene imovine Netočno .

Primjer 3: Provjerite je li datoteka otvorena ili nije pomoću OSError-a

The OSError generira kada se funkcija rename () poziva više puta za datoteku koja je već otvorena. Izradite python datoteku sa sljedećom skriptom kako biste provjerili je li datoteka otvorena ili zatvorena pomoću OSError . Modul os korišten je u skripti za provjeru postojanja datoteke i preimenovanje datoteke. Kada preimenovati() funkcija se poziva drugi put, OSError će se generirati, a prilagođena poruka o pogrešci će se ispisati.

# Uvezite os modul za provjeru postojanja datoteke
uvoz
# Postavite postojeći naziv datoteke
naziv datoteke ='clients.txt'
# Postavite novi naziv datoteke
novo ime ='customers.txt'
# Provjerite postoji li datoteka ili ne
akoos.puta.postoji(naziv datoteke):
probati:
# Prvi put pozovite funkciju preimenovanja
os.preimenovati(naziv datoteke, novo ime)
# Pozovite funkciju preimenovanja po drugi put
os.preimenovati(naziv datoteke, novo ime)
# Pogreška podizanja ako se datoteka otvorila
osim OSError:
ispisati('Datoteka je još uvijek otvorena.')

drugo:
# Ispišite poruku ako datoteka ne postoji
ispisati('Mapa ne postoji.')

Izlaz:

Sljedeći izlaz pojavit će se nakon izvršavanja gornje skripte. Ovdje, clients.txt postoji na trenutnoj lokaciji, a poruka o pogrešci, Datoteka je i dalje otvorena, je tiskao jer je OSError iznimka je nastala kada je druga preimenovati() funkcija je izvršena.

Zaključak:

Kada moramo raditi s istom datotekom više puta u skripti, važno je znati je li datoteka otvorena ili zatvorena. Bolje je pozvati funkciju close () da zatvorite datoteku nakon dovršetka operacije s datotekom. Pogreška se javlja kada se datoteka po drugi put otvori u istoj skripti bez zatvaranja. U ovom vodiču prikazana su različita rješenja ovog problema pomoću jednostavnih primjera koji pomažu korisnicima pythona.