Hur man kontrollerar att en fil öppnas eller stängs i Python

How Check File Is Opened



Filen används för att lagra data permanent. Att arbeta med en fil är en mycket vanlig uppgift för alla programmeringsspråk. Många inbyggda funktioner finns i Python för att skapa, öppna, läsa, skriva och stänga filen. Två typer av filer kan skapas för att lagra data. Dessa är textfiler och binära filer. Varje fil måste öppnas innan du läser eller skriver. De öppen() funktionen används i Python för att öppna en fil. Använda öppen() funktion är ett sätt att kontrollera att en viss fil öppnas eller stängs. Om öppen() funktionen öppnar en tidigare öppnad fil, sedan en IO -fel kommer att genereras. Ett annat sätt att kontrollera att en fil öppnas eller stängs är att kontrollera värdena på stängd egenskapen för filhanteringsobjektet. Använder sig av Döp om() funktion är ett annat sätt att kontrollera att filen öppnas eller stängs. Olika sätt att kontrollera om någon fil öppnas eller stängs i Python har visats i denna handledning.

Skapa en fil för kontroll:

Du kan använda en befintlig fil eller skapa en ny fil för att testa exempelkoden som visas i den här självstudien. En ny textfil heter clients.txt har skapats med följande innehåll att använda senare i nästa del av självstudien.







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



Exempel 1: Kontrollera att filen är öppen eller inte med IOError

IO -fel genereras när funktionen open () kallas för att öppna en fil som har öppnats tidigare. Skapa en pythonfil med följande skript för att kontrollera att en fil öppnas eller inte med försök-utom blockera. Här kommer alla befintliga filnamn att tas som input och öppnas för läsning. Därefter kallas funktionen open () igen för att öppna samma fil som öppnar en IOError och skriver ut felmeddelandet.



# Ta filnamnet för att kontrollera
filnamn = input('Ange ett befintligt filnamn: n')
# Öppna filen för första gången med funktionen open ()
fileHandler = öppen(filnamn,'r')
# Försök att öppna filen samma fil igen
Prova:
med öppet('filnamn','r') somfil:
# Skriv ut framgångsmeddelandet
skriva ut('Filen har öppnats för läsning.')
# Höj fel om filen öppnas innan
utom IOError:
skriva ut('Filen har redan öppnats.')

Produktion:

Följande utdata visas efter att ovanstående skript har körts. Här, clients.txt finns på den aktuella platsen och felmeddelandet, Filen har redan öppnats, har tryckt för IO -fel undantag.





Exempel 2: Kontrollera att filen är stängd eller inte med hjälp av den stängda egenskapen.

Värdet på stängd egenskapen är sann om någon fil stängs. Skapa en pythonfil med följande skript för att kontrollera att en fil är stängd eller inte som finns på den aktuella platsen. Det föregående exempelskriptet genererar ett fel om filnamnet från användaren inte finns på den aktuella platsen. Detta problem har lösts i detta exempel. De du modul används här för att kontrollera förekomsten av filnamnet som kommer att tas från användaren. Check_closed () -funktionen har definierat för att kontrollera att filen är stängd eller inte som kommer att kallas om filen finns.



# Importera os -modul för att kontrollera att filen finns
importera
# Drfine funktion kontrollera filen är stängd eller inte
def check_closed():
omfileHandler.closed == Falskt:
# Skriv ut framgångsmeddelandet
skriva ut('Filen har öppnats för läsning.')
annan:
# Skriv ut felmeddelandet
skriva ut('Filen har stängts.')

# Ta filnamnet för att kontrollera
filnamn = input('Ange ett befintligt filnamn: n')
# Kontrollera att filen finns eller inte
omos.path.exists(filnamn):
# Öppna filen för läsning
fileHandler = öppen(filnamn,'r')
# Ring funktionen
check_closed()
annan:
# Skriv ut meddelande om filen inte finns
skriva ut('Fil existerar inte.')

Produktion:

Följande utdata visas efter att ovanstående skript har körts. Här, clients.txt finns på den aktuella platsen och framgångsmeddelandet, Filen har öppnats för läsning, har skrivits ut eftersom värdet på den stängda egendomen returneras Falsk .

Exempel 3: Kontrollera att filen är öppen eller inte med OSError

De OSError genereras när funktionen rename () anropas mer än en gång för en fil som redan har öppnats. Skapa en pythonfil med följande skript för att kontrollera att en fil öppnas eller stängs med OSError . OS -modulen har använts i skriptet för att kontrollera filens existens och byta namn på filen. När Döp om() funktion kallas för andra gången, kommer OSError att genereras och det anpassade felmeddelandet skrivs ut.

# Importera os -modul för att kontrollera att filen finns
importera
# Ange det befintliga filnamnet
filnamn ='clients.txt'
# Ställ in det nya filnamnet
nytt namn ='customers.txt'
# Kontrollera att filen finns eller inte
omos.path.exists(filnamn):
Prova:
# Ring namnfunktionen för första gången
os.rename(filnamn, nytt namn)
# Ring namnfunktionen för andra gången
os.rename(filnamn, nytt namn)
# Höj fel om filen har öppnats
utom OSError:
skriva ut('Filen är fortfarande öppen.')

annan:
# Skriv ut meddelande om filen inte finns
skriva ut('Fil existerar inte.')

Produktion:

Följande utdata kommer att visas efter att ovanstående skript har körts. Här, clients.txt finns på den aktuella platsen och felmeddelandet, Filen är fortfarande öppen, har skrivit ut eftersom OSError undantag har genererats när den andra Döp om() funktionen har körts.

Slutsats:

När vi behöver arbeta med samma fil flera gånger i ett skript är det viktigt att veta om filen öppnas eller stängs. Det är bättre att ringa funktionen close () för att stänga filen efter att filoperationen har slutförts. Felet uppstår när en fil öppnas för andra gången i samma skript utan att stänga den. Olika lösningar på detta problem har visats i denna handledning med hjälp av enkla exempel för att hjälpa pythonanvändarna.