Tiedoston avaamisen tai sulkemisen tarkistaminen Pythonissa

How Check File Is Opened

Tiedostoa käytetään tietojen tallentamiseen pysyvästi. Tiedoston kanssa työskentely on hyvin yleinen tehtävä millä tahansa ohjelmointikielellä. Pythonissa on monia sisäänrakennettuja toimintoja tiedoston luomiseen, avaamiseen, lukemiseen, kirjoittamiseen ja sulkemiseen. Tietojen tallentamiseen voidaan luoda kahdenlaisia ​​tiedostoja. Nämä ovat tekstitiedostoja ja binaaritiedostoja. Kaikki tiedostot on avattava ennen lukemista tai kirjoittamista. The avata() -toimintoa käytetään Pythonissa tiedoston avaamiseen. Käyttämällä avata() toiminto on yksi tapa tarkistaa, onko tietty tiedosto avattu tai suljettu. Jos avata() -toiminto avaa aiemmin avatun tiedoston ja sitten IOError luodaan. Toinen tapa tarkistaa, onko tiedosto avattu tai suljettu, on tarkistaa tiedoston arvot suljettu tiedostonkäsittely -objektin ominaisuus. Käyttämällä nimeä uudelleen() -toiminto on toinen tapa tarkistaa, onko tiedosto avattu tai suljettu. Tässä opetusohjelmassa on esitetty erilaisia ​​tapoja tarkistaa, onko tiedosto avattu tai suljettu Pythonissa.

Luo tiedosto tarkistusta varten:

Voit käyttää mitä tahansa olemassa olevaa tiedostoa tai luoda uuden tiedoston testataksesi tässä opetusohjelmassa näkyvää esimerkkikoodia. Uusi tekstitiedosto nimeltä customers.txt on luotu seuraavalla sisällöllä käytettäväksi myöhemmin opetusohjelman seuraavassa osassa.



Henkilötunnus Nimi Sähköposti
01 Jony Liver [sähköposti suojattu]
02 Manik Hossain [sähköposti suojattu]
03 Neha Akter [sähköposti suojattu]
04 Janatul Ferdous [sähköposti suojattu]
05 Helal Uddin [sähköposti suojattu]



Esimerkki 1: Tarkista, onko tiedosto avattu vai ei, käyttämällä IOError-toimintoa

IOError luo, kun open () -toimintoa kutsutaan avaamaan aiemmin avattu tiedosto. Luo python -tiedosto seuraavalla komentosarjalla tarkistaaksesi, onko tiedosto avattu vai ei käyttämällä kokeile-paitsi lohko. Tässä kaikki olemassa olevat tiedostonimet otetaan syötteeksi ja avataan lukemista varten. Seuraavaksi open () -toimintoa kutsutaan uudelleen avaamaan sama tiedosto, joka nostaa IOError -virheen ja tulostaa virheilmoituksen.



# Tarkista tiedostonimi
tiedostonimi = syöttö('Anna olemassa oleva tiedostonimi: n'')
# Avaa tiedosto ensimmäistä kertaa open () -toiminnolla
fileHandler = auki(Tiedoston nimi,'r')
# Yritä avata sama tiedosto uudelleen
yrittää:
auki('Tiedoston nimi','r') kutentiedosto:
# Tulosta onnistumisviesti
Tulosta('Tiedosto on avattu lukemista varten.')
# Nosta virhe, jos tiedosto avataan ennen
paitsi IOError:
Tulosta('Tiedosto on jo avattu.')

Lähtö:

Seuraava tulos tulee näkyviin yllä olevan komentosarjan suorittamisen jälkeen. Tässä, customers.txt on olemassa nykyisessä paikassa, ja virheilmoitus, Tiedosto on jo avattu, on tulostanut IOError poikkeus.

Esimerkki 2: Tarkista, onko tiedosto suljettu vai ei, käyttämällä suljettua ominaisuutta.

Arvo suljettu ominaisuus on totta, jos jokin tiedosto suljetaan. Luo python -tiedosto seuraavalla komentosarjalla tarkistaaksesi, onko tiedosto suljettu vai ei, joka on olemassa nykyisessä paikassa. Edellinen esimerkkikomentosarja tuottaa virheen, jos käyttäjältä otettu tiedostonimi ei ole nykyisessä sijainnissa. Tämä ongelma on ratkaistu tässä esimerkissä. The sinä moduulia käytetään tässä tarkistamaan käyttäjältä otettavan tiedostonimen olemassaolo. Check_closed () -toiminto on määrittänyt tarkistamaan, onko tiedosto suljettu vai ei, sitä kutsutaan, jos tiedosto on olemassa.



# Tuo osamoduuli tiedoston olemassaolon tarkistamiseksi
tuonti
# Drfine -toiminto tarkista, onko tiedosto suljettu vai ei
def check_closed():
josfileHandler.closed == Väärä:
# Tulosta onnistumisviesti
Tulosta('Tiedosto on avattu lukemista varten.')
muu:
# Tulosta virheilmoitus
Tulosta('Tiedosto on suljettu.')

# Tarkista tiedostonimi
tiedostonimi = syöttö('Anna olemassa oleva tiedostonimi: n'')
# Tarkista, onko tiedosto olemassa vai ei
josos.path.exist(Tiedoston nimi):
# Avaa tiedosto lukemista varten
fileHandler = auki(Tiedoston nimi,'r')
# Soita toimintoon
check_closed()
muu:
# Tulosta viesti, jos tiedostoa ei ole
Tulosta('Tiedostoa ei ole.')

Lähtö:

Seuraava tulos tulee näkyviin yllä olevan komentosarjan suorittamisen jälkeen. Tässä, customers.txt olemassa oleva sijainti ja onnistumisviesti, Tiedosto on avattu lukemista varten, on tulostanut, koska suljetun omaisuuden arvo palautettiin Väärä .

Esimerkki 3: Tarkista, onko tiedosto avattu tai ei, käyttämällä OSError-toimintoa

The OSVirhe luo, kun rename () -funktiota kutsutaan useammin kuin kerran jo avatulle tiedostolle. Luo python -tiedosto seuraavalla komentosarjalla tarkistaaksesi, että tiedosto avataan tai suljetaan käyttämällä OSVirhe . Käsikirjoituksessa on käytetty os -moduulia tarkistamaan tiedoston olemassaolo ja nimeämään tiedosto uudelleen. Kun nimeä uudelleen() -toimintoa kutsutaan toisen kerran, OSError luodaan ja mukautettu virhesanoma tulostetaan.

# Tuo osamoduuli tiedoston olemassaolon tarkistamiseksi
tuonti
# Aseta nykyinen tiedostonimi
tiedostonimi ='customers.txt'
# Aseta uusi tiedostonimi
uusi nimi ='customers.txt'
# Tarkista, onko tiedosto olemassa vai ei
josos.path.exist(Tiedoston nimi):
yrittää:
# Soita uudelleennimeämistoiminto ensimmäistä kertaa
os.nimi(tiedostonimi, uusi nimi)
# Soita uudelleennimeämistoiminto toisen kerran
os.nimi(tiedostonimi, uusi nimi)
# Nosta virhe, jos tiedosto on avattu
paitsi OSVirhe:
Tulosta('Tiedosto on edelleen auki.')

muu:
# Tulosta viesti, jos tiedostoa ei ole
Tulosta('Tiedostoa ei ole.')

Lähtö:

Seuraava tulos tulee näkyviin yllä olevan komentosarjan suorittamisen jälkeen. Tässä, customers.txt on olemassa nykyisessä paikassa, ja virheilmoitus, Tiedosto on edelleen auki, on tulostanut, koska OSVirhe poikkeus on syntynyt, kun toinen nimeä uudelleen() toiminto on suoritettu.

Johtopäätös:

Kun meidän on käsiteltävä samaa tiedostoa useita kertoja komentosarjassa, on tärkeää tietää, onko tiedosto avattu vai suljettu. On parempi kutsua close () -toiminto sulkea tiedosto sen jälkeen, kun tiedosto on suoritettu. Virhe ilmenee, kun tiedosto avataan toisen kerran samassa komentosarjassa sulkematta sitä. Tässä opetusohjelmassa on esitetty erilaisia ​​ratkaisuja tähän ongelmaan käyttämällä yksinkertaisia ​​esimerkkejä python -käyttäjien auttamiseksi.