Kako preveriti, ali je datoteka odprta ali zaprta v Pythonu

How Check File Is Opened



Datoteka se uporablja za trajno shranjevanje podatkov. Delo z datoteko je zelo pogosta naloga vsakega programskega jezika. V Pythonu obstaja veliko vgrajenih funkcij za ustvarjanje, odpiranje, branje, pisanje in zapiranje datoteke. Za shranjevanje podatkov lahko ustvarite dve vrsti datotek. To so besedilne datoteke in binarne datoteke. Pred branjem ali pisanjem je treba odpreti katero koli datoteko. The odprto() funkcija se uporablja v Pythonu za odpiranje datoteke. Uporabljati odprto() Funkcija je eden od načinov za preverjanje, ali je določena datoteka odprta ali zaprta. Če je odprto() funkcija odpre prej odprto datoteko, nato pa IOError bo ustvarjeno. Drug način preverjanja, ali je datoteka odprta ali zaprta, je preveriti vrednosti datoteke zaprto lastnost objekta za obdelavo datotek. Uporaba preimenuj () funkcija je še en način za preverjanje, ali je datoteka odprta ali zaprta. V tej vadnici so bili prikazani različni načini preverjanja, ali je datoteka odprta ali zaprta v Pythonu.

Ustvarite datoteko za preverjanje:

Uporabite lahko katero koli obstoječo datoteko ali ustvarite novo datoteko, da preizkusite primer kode, prikazane v tej vadnici. Nova besedilna datoteka z imenom clients.txt je bila ustvarjena z naslednjo vsebino, ki jo bomo uporabili pozneje v naslednjem delu vadnice.







ID ime E -pošta
01 Jony Liver [zaščiteno po e -pošti]
02 Manik Hossain [zaščiteno po e -pošti]
03 Neha Akter [zaščiteno po e -pošti]
04 Janatul Ferdous [zaščiteno po e -pošti]
05 Helal Uddin [zaščiteno po e -pošti]



Primer-1: Preverite, ali je datoteka odprta ali ne, z uporabo IOError

IOError ustvari, ko se pokliče funkcija open (), da odpre datoteko, ki je bila že odprta. Ustvarite datoteko python z naslednjim skriptom, da preverite, ali je datoteka odprta ali ne z uporabo poskusi-razen blok. Tukaj bo vsako obstoječe ime datoteke vzeto kot vhodno in odprto za branje. Nato se znova pokliče funkcija open (), da odpre isto datoteko, ki bo sprožila IOError in natisnila sporočilo o napaki.



# Vzemite ime datoteke za preverjanje
ime datoteke = vnos('Vnesite katero koli obstoječe ime datoteke: n')
# Prvič odprite datoteko s funkcijo open ()
fileHandler = odprto(Ime datoteke,'r')
# Poskusite znova odpreti isto datoteko
poskusi:
z odprtim('Ime datoteke','r') kotmapa:
# Natisnite sporočilo o uspehu
tiskanje('Datoteka je odprta za branje.')
# Napaka pri dvigu, če je datoteka že odprta
razen IOError:
tiskanje('Datoteka se je že odprla.')

Izhod:

Po izvedbi zgornjega skripta se prikaže naslednji izhod. Tukaj, clients.txt obstaja na trenutni lokaciji in sporočilo o napaki, Datoteka se je že odprla, je natisnil za IOError izjema.





Primer 2: Preverite, ali je datoteka zaprta ali ne, z uporabo lastnosti zaprto.

Vrednost zaprto lastnost bo resnična, če bo katera koli datoteka zaprta. Ustvarite datoteko python z naslednjim skriptom, da preverite, ali je datoteka zaprta ali ne, ki obstaja na trenutni lokaciji. Prejšnji primer skripta bo ustvaril napako, če ime datoteke, vzeto od uporabnika, ne obstaja na trenutni lokaciji. Ta problem je bil rešen v tem primeru. The ti modul se tukaj uporablja za preverjanje obstoja imena datoteke, ki bo vzeto od uporabnika. Funkcija check_closed () je določila, da preveri, ali je datoteka zaprta ali ne, kar bo poklicano, če datoteka obstaja.



# Uvozite modul os, da preverite obstoj datoteke
uvoz
# Funkcija Drfine preveri, ali je datoteka zaprta ali ne
def check_closed():
čefileHandler.closed == Napačno:
# Natisnite sporočilo o uspehu
tiskanje('Datoteka je odprta za branje.')
drugače:
# Natisnite sporočilo o napaki
tiskanje('Datoteka je zaprta.')

# Vzemite ime datoteke za preverjanje
ime datoteke = vnos('Vnesite katero koli obstoječe ime datoteke: n')
# Preverite, ali datoteka obstaja ali ne
čeos.path.e obstaja(Ime datoteke):
# Odprite datoteko za branje
fileHandler = odprto(Ime datoteke,'r')
# Pokličite funkcijo
check_closed()
drugače:
# Natisnite sporočilo, če datoteka ne obstaja
tiskanje('Datoteka ne obstaja.')

Izhod:

Po izvedbi zgornjega skripta se prikaže naslednji izhod. Tukaj, clients.txt obstaja na trenutni lokaciji in sporočilo o uspehu, Datoteka je odprta za branje, je natisnil, ker je vrnjena vrednost zaprte nepremičnine Napačno .

Primer 3: Preverite, ali je datoteka odprta ali ne, z uporabo OSError

The Napaka OSE ustvari, ko se funkcija rename () pokliče večkrat za datoteko, ki je že odprta. Ustvarite datoteko python z naslednjim skriptom, da preverite, ali se datoteka odpre ali zapre z uporabo Napaka OSE . Modul os je bil v skriptu uporabljen za preverjanje obstoja datoteke in preimenovanje datoteke. Ko preimenuj () funkcija pokliče drugič, ustvari se OSError in natisne se sporočilo o napaki po meri.

# Uvozite modul os, da preverite obstoj datoteke
uvoz
# Nastavite obstoječe ime datoteke
ime datoteke ='clients.txt'
# Nastavite novo ime datoteke
novo ime ='customers.txt'
# Preverite, ali datoteka obstaja ali ne
čeos.path.e obstaja(Ime datoteke):
poskusi:
# Prvič pokličite funkcijo preimenovanja
os.rename(ime datoteke, novo ime)
# Drugič pokličite funkcijo preimenovanja
os.rename(ime datoteke, novo ime)
# Napaka pri dvigu, če se je datoteka odprla
razen OSError:
tiskanje('Datoteka je še vedno odprta.')

drugače:
# Natisnite sporočilo, če datoteka ne obstaja
tiskanje('Datoteka ne obstaja.')

Izhod:

Po izvedbi zgornjega skripta se prikaže naslednji izhod. Tukaj, clients.txt obstaja na trenutni lokaciji in sporočilo o napaki, Datoteka je še odprta, je natisnil, ker je Napaka OSE izjema je nastala, ko je druga preimenuj () funkcija je bila izvedena.

Zaključek:

Kadar moramo v isti skripti večkrat delati z isto datoteko, je nujno vedeti, ali je datoteka odprta ali zaprta. Bolje je, da po zaključku operacije z datoteko pokličete funkcijo close (). Napaka se pojavi, ko se datoteka drugič odpre v istem skriptu, ne da bi jo zaprli. V tej vadnici so bile prikazane različne rešitve tega problema z uporabo preprostih primerov za pomoč uporabnikom pythona.