Hoe te controleren of een bestand is geopend of gesloten in Python

How Check File Is Opened



Het bestand wordt gebruikt om gegevens permanent op te slaan. Werken met een bestand is een veel voorkomende taak van elke programmeertaal. Er zijn veel ingebouwde functies in Python om het bestand te maken, openen, lezen, schrijven en sluiten. Er kunnen twee soorten bestanden worden gemaakt om gegevens op te slaan. Dit zijn tekstbestanden en binaire bestanden. Elk bestand moet worden geopend voordat u kunt lezen of schrijven. De open() functie wordt in Python gebruikt om een ​​bestand te openen. De ... gebruiken open() functie is een manier om te controleren of een bepaald bestand is geopend of gesloten. Als de open() functie opent een eerder geopend bestand, dan een IOEfout zal worden gegenereerd. Een andere manier om te controleren of een bestand is geopend of gesloten, is door de waarden van de gesloten eigenschap van het bestandshandlerobject. Gebruik makend van hernoem() functie is een andere manier om te controleren of het bestand is geopend of gesloten. In deze zelfstudie zijn verschillende manieren getoond om te controleren of een bestand in Python is geopend of gesloten.

Maak een bestand aan om te controleren:

U kunt elk bestaand bestand gebruiken of een nieuw bestand maken om de voorbeeldcode in deze zelfstudie te testen. Een nieuw tekstbestand met de naam clients.txt is gemaakt met de volgende inhoud om later in het volgende deel van de zelfstudie te gebruiken.







ID Naam E-mail
01 Jony Lever [e-mail beveiligd]
02 Manik Hossain [e-mail beveiligd]
03 Neha Akter [e-mail beveiligd]
04 Janatul Ferdous [e-mail beveiligd]
05 Helal Uddin [e-mail beveiligd]



Voorbeeld-1: Controleer of het bestand is geopend of niet met IOError

IOEfout genereert wanneer de functie open() wordt aangeroepen om een ​​bestand te openen dat eerder is geopend. Maak een python-bestand met het volgende script om te controleren of een bestand is geopend of niet met behulp van probeer-behalve blok. Hier wordt elke bestaande bestandsnaam als invoer genomen en geopend om te lezen. Vervolgens wordt de functie open() opnieuw aangeroepen om hetzelfde bestand te openen dat een IOError zal veroorzaken en het foutbericht zal afdrukken.



# Neem de bestandsnaam om te controleren
bestandsnaam = invoer('Voer een bestaande bestandsnaam in:N')
# Open het bestand voor de eerste keer met de functie open()
fileHandler = open(bestandsnaam,'R')
# Probeer het bestand hetzelfde bestand opnieuw te openen
proberen:
met open('bestandsnaam','R') alshet dossier:
# Druk het succesbericht af
afdrukken('Bestand is geopend om te lezen.')
# Raise fout als het bestand eerder is geopend
behalve IOE-fout:
afdrukken('Bestand is al geopend.')

Uitgang:

De volgende uitvoer zal verschijnen na het uitvoeren van het bovenstaande script. Hier, clients.txt bestaat op de huidige locatie, en de foutmelding, Bestand is al geopend, heeft gedrukt voor de IOEfout uitzondering.





Voorbeeld-2: Controleer of het bestand al dan niet is gesloten door de eigenschap closed te gebruiken.

De waarde van de gesloten eigenschap zal waar zijn als een bestand is gesloten. Maak een python-bestand met het volgende script om te controleren of een bestand is gesloten of niet bestaat op de huidige locatie. Het vorige voorbeeldscript genereert een fout als de bestandsnaam van de gebruiker niet bestaat op de huidige locatie. Dit probleem is in dit voorbeeld opgelost. De jij module wordt hier gebruikt om het bestaan ​​te controleren van de bestandsnaam die van de gebruiker zal worden overgenomen. De functie check_closed() heeft gedefinieerd om te controleren of het bestand is gesloten of niet dat wordt aangeroepen als het bestand bestaat.



# Importeer os-module om het bestaan ​​van het bestand te controleren
importeren
# Drfine-functie controleer of het bestand is gesloten of niet
def check_closed():
indienfileHandler.closed == Onwaar:
# Druk het succesbericht af
afdrukken('Bestand is geopend om te lezen.')
anders:
# Druk de foutmelding af
afdrukken('Bestand is gesloten.')

# Neem de bestandsnaam om te controleren
bestandsnaam = invoer('Voer een bestaande bestandsnaam in:N')
# Controleer of het bestand bestaat of niet
indienos.pad.bestaat(bestandsnaam):
# Open het bestand om te lezen
fileHandler = open(bestandsnaam,'R')
# Roep de functie aan
check_closed()
anders:
# Bericht afdrukken als het bestand niet bestaat
afdrukken('Bestand bestaat niet.')

Uitgang:

De volgende uitvoer zal verschijnen na het uitvoeren van het bovenstaande script. Hier, clients.txt bestaat op de huidige locatie, en het succesbericht, Bestand is geopend om te lezen, is afgedrukt omdat de waarde van de gesloten eigenschap is geretourneerd niet waar .

Voorbeeld-3: Controleer of het bestand is geopend of niet met OSError

De OSEror genereert wanneer de functie rename() meer dan één keer wordt aangeroepen voor een bestand dat al is geopend. Maak een python-bestand met het volgende script om te controleren of een bestand wordt geopend of gesloten met OSEror . De os-module is in het script gebruikt om het bestaan ​​van het bestand te controleren en het bestand te hernoemen. Wanneer de hernoem() functie voor de tweede keer wordt aangeroepen, wordt OSError gegenereerd en wordt het aangepaste foutbericht afgedrukt.

# Importeer os-module om het bestaan ​​van het bestand te controleren
importeren
# Stel de bestaande bestandsnaam in
bestandsnaam ='klanten.txt'
# Stel de nieuwe bestandsnaam in
nieuwe naam ='klanten.txt'
# Controleer of het bestand bestaat of niet
indienos.pad.bestaat(bestandsnaam):
proberen:
# Roep de hernoemfunctie voor de eerste keer aan
os.hernoemen(bestandsnaam, nieuwe naam)
# Roep de hernoemfunctie voor de tweede keer aan
os.hernoemen(bestandsnaam, nieuwe naam)
# Raise fout als het bestand is geopend
behalve OSEror:
afdrukken('Bestand is nog geopend.')

anders:
# Bericht afdrukken als het bestand niet bestaat
afdrukken('Bestand bestaat niet.')

Uitgang:

De volgende uitvoer zal verschijnen na het uitvoeren van het bovenstaande script. Hier, clients.txt bestaat op de huidige locatie, en de foutmelding, Bestand is nog steeds geopend, heeft gedrukt omdat de OSEror uitzondering heeft gegenereerd wanneer de tweede hernoem() functie is uitgevoerd.

Conclusie:

Wanneer we in een script meerdere keren met hetzelfde bestand moeten werken, is het essentieel om te weten of het bestand geopend of gesloten is. Het is beter om de functie close() aan te roepen om het bestand te sluiten na het voltooien van de bestandsbewerking. De fout treedt op wanneer een bestand voor de tweede keer in hetzelfde script wordt geopend zonder het te sluiten. Verschillende oplossingen voor dit probleem zijn in deze tutorial getoond aan de hand van eenvoudige voorbeelden om de python-gebruikers te helpen.