Kā pārbaudīt, vai fails tiek atvērts vai aizvērts Python

How Check File Is Opened



Fails tiek izmantots, lai pastāvīgi uzglabātu datus. Darbs ar failu ir ļoti izplatīts jebkuras programmēšanas valodas uzdevums. Python ir daudzas iebūvētas funkcijas, lai izveidotu, atvērtu, lasītu, rakstītu un aizvērtu failu. Datu glabāšanai var izveidot divu veidu failus. Tie ir teksta faili un binārie faili. Jebkurš fails ir jāatver pirms lasīšanas vai rakstīšanas. The atvērts () funkcija tiek izmantota programmā Python, lai atvērtu failu. Izmantojot atvērts () funkcija ir viens no veidiem, kā pārbaudīt, vai konkrēts fails ir atvērts vai aizvērts. Ja atvērts () funkcija atver iepriekš atvērtu failu, pēc tam an IOError tiks ģenerēts. Vēl viens veids, kā pārbaudīt, vai fails ir atvērts vai aizvērts, ir pārbaudīt slēgts failu apstrādātāja objekta īpašums. Izmantojot pārdēvēt () funkcija ir vēl viens veids, kā pārbaudīt, vai fails ir atvērts vai aizvērts. Šajā apmācībā ir parādīti dažādi veidi, kā pārbaudīt, vai fails tiek atvērts vai aizvērts Python.

Izveidojiet failu pārbaudei:

Varat izmantot jebkuru esošo failu vai izveidot jaunu failu, lai pārbaudītu šajā apmācībā parādīto koda piemēru. Jauns teksta fails ar nosaukumu klienti.txt ir izveidots ar šādu saturu, ko izmantot vēlāk apmācības nākamajā daļā.







ID Vārds E -pasts
01 Džonijs Akns [aizsargāts pa e -pastu]
02 Manik Hossain [aizsargāts pa e -pastu]
03 Neha Akter [aizsargāts pa e -pastu]
04 Janatuls Ferdouss [aizsargāts pa e -pastu]
05 Helal Uddin [aizsargāts pa e -pastu]



1. piemērs: pārbaudiet, vai fails ir atvērts vai nē, izmantojot IOError

IOError ģenerē, kad funkcija open () tiek izsaukta, lai atvērtu iepriekš atvērtu failu. Izveidojiet pitona failu ar šādu skriptu, lai pārbaudītu, vai fails ir atvērts vai nav, izmantojot mēģiniet-izņemot bloķēt. Šeit jebkurš esošais faila nosaukums tiks uzskatīts par ievadi un atvērts lasīšanai. Pēc tam atkal tiek izsaukta funkcija open (), lai atvērtu to pašu failu, kas parādīs IOError un izdrukās kļūdas ziņojumu.



# Pārbaudiet faila nosaukumu
faila nosaukums = ievade('Ievadiet jebkuru esošo faila nosaukumu: n')
# Atveriet failu pirmo reizi, izmantojot funkciju open ()
fileHandler = atvērts(faila nosaukums,'r')
# Mēģiniet vēlreiz atvērt to pašu failu
pamēģini:
ar atvērtu('faila nosaukums','r') fails:
# Izdrukājiet veiksmes ziņojumu
drukāt('Fails ir atvērts lasīšanai.')
# Paaugstiniet kļūdu, ja fails ir atvērts iepriekš
izņemot IOError:
drukāt('Fails jau ir atvērts.')

Izeja:

Pēc iepriekš minētā skripta izpildes parādīsies šāda izvade. Šeit, klienti.txt pastāv pašreizējā atrašanās vietā un tiek parādīts kļūdas ziņojums, Fails jau ir atvērts, ir iespiedis IOError izņēmums.





2. piemērs. Pārbaudiet, vai fails ir aizvērts vai nav, izmantojot slēgto rekvizītu.

Vērtība slēgts īpašums būs patiess, ja kāds fails tiks aizvērts. Izveidojiet pitona failu ar šādu skriptu, lai pārbaudītu, vai fails ir aizvērts vai nav pašreizējā vietā. Iepriekšējais skripta paraugs radīs kļūdu, ja no lietotāja paņemtais faila nosaukums pašreizējā vietā nepastāv. Šī problēma ir atrisināta šajā piemērā. The jūs modulis šeit tiek izmantots, lai pārbaudītu, vai pastāv faila nosaukums, kas tiks ņemts no lietotāja. Funkcija check_closed () ir definējusi, lai pārbaudītu, vai fails ir aizvērts vai nav, tas tiks izsaukts, ja fails pastāv.



# Importējiet OS moduli, lai pārbaudītu faila esamību
importēt
# Drfine funkcijas pārbaude, vai fails ir aizvērts vai nav
def check_closed():
jafileHandler.closed == Nepareizi:
# Izdrukājiet veiksmes ziņojumu
drukāt('Fails ir atvērts lasīšanai.')
cits:
# Izdrukājiet kļūdas ziņojumu
drukāt('Fails ir aizvērts.')

# Pārbaudiet faila nosaukumu
faila nosaukums = ievade('Ievadiet jebkuru esošo faila nosaukumu: n')
# Pārbaudiet, vai fails ir vai nav
jaos.path.exist(faila nosaukums):
# Atveriet failu lasīšanai
fileHandler = atvērts(faila nosaukums,'r')
# Izsauciet funkciju
check_closed()
cits:
# Drukāt ziņojumu, ja fails neeksistē
drukāt('Fails neeksistē.')

Izeja:

Pēc iepriekš minētā skripta izpildes parādīsies šāda izvade. Šeit, klienti.txt pastāv pašreizējā atrašanās vietā un paziņojums par veiksmi, Fails ir atvērts lasīšanai, ir drukājis, jo tika atgriezta slēgtā īpašuma vērtība Nepatiess .

3. piemērs. Pārbaudiet, vai fails ir atvērts vai nav, izmantojot OSError

The OS kļūda ģenerē, kad funkcija rename () tiek izsaukta vairāk nekā vienu reizi jau atvērtam failam. Izveidojiet pitona failu ar šādu skriptu, lai pārbaudītu, vai fails ir atvērts vai aizvērts, izmantojot OS kļūda . Os modulis ir izmantots skriptā, lai pārbaudītu faila esamību un pārdēvētu failu. Kad pārdēvēt () funkcija tiek izsaukta otro reizi, tiks ģenerēta OSError un tiks izdrukāts pielāgotais kļūdas ziņojums.

# Importējiet OS moduli, lai pārbaudītu faila esamību
importēt
# Iestatiet esošo faila nosaukumu
faila nosaukums ='customers.txt'
# Iestatiet jauno faila nosaukumu
jauns vārds ='customers.txt'
# Pārbaudiet, vai fails ir vai nav
jaos.path.exist(faila nosaukums):
pamēģini:
# Pirmo reizi izsauciet pārdēvēšanas funkciju
os.nosaukums(faila nosaukums, jauns nosaukums)
# Otrreiz izsauciet pārdēvēšanas funkciju
os.nosaukums(faila nosaukums, jauns nosaukums)
# Paaugstiniet kļūdu, ja fails ir atvērts
izņemot OS kļūdu:
drukāt('Fails joprojām ir atvērts.')

cits:
# Drukāt ziņojumu, ja fails neeksistē
drukāt('Fails neeksistē.')

Izeja:

Pēc iepriekš minētā skripta izpildes parādīsies šāda izvade. Šeit, klienti.txt pastāv pašreizējā atrašanās vietā un tiek parādīts kļūdas ziņojums, Fails joprojām ir atvērts, ir drukājis, jo OS kļūda izņēmums ir radīts, kad otrais pārdēvēt () funkcija ir izpildīta.

Secinājums:

Ja mums ir jāstrādā ar vienu un to pašu failu vairākas reizes skriptā, ir svarīgi zināt, vai fails ir atvērts vai aizvērts. Pēc faila darbības pabeigšanas labāk ir izsaukt funkciju close (), lai aizvērtu failu. Kļūda rodas, ja fails tiek atvērts otro reizi tajā pašā skriptā, to neaizverot. Šajā apmācībā ir parādīti dažādi šīs problēmas risinājumi, izmantojot vienkāršus piemērus, lai palīdzētu python lietotājiem.