except Exception as e:
6
|
print(e)
|
7
|
finally:
|
8
|
somefile.close()
|
9
|
except Exception as ex:
|
10
|
print(ex)
|
Bu erda, fayl bilan bajariladigan barcha amallar ketma-ketligi try blokida yoziladi. Agar biror bir istisno to'satdan kelib chiqsa, u holda finally blokida fayl blokirovka qilinadi. Fayllar bilan ishlashning yanada qulayroq with konstruktsiyasi mavjud:
1
|
with open(file, mode) as file_obj:
|
2
|
#buyruqlar
|
Bu konstruktsiya ochiq fayl uchun file_obj o’zgaruvchi aniqlanadi va buyruqlar ketma-ketligi bajariladi. Ular bajarilgandan so'ng, fayl avtomatik ravishda yopiladi. Blokda amallar ketma-ketligini bajarishda istisnolar yuzaga kelsa ham, fayl avtomatik ravishda yopiladi. with konstruktsiyasi yordamida, yuqoridagi misolni quyidagicha qayta yozish mumkin:
1
|
with open("salom.txt", "w") as somefile:
|
2
|
somefile.write("Salom Python")
|
2.2.Binar fayllar
Binar fayllarda, matnli fayllardan farqli o'laroq, ma'lumotlar baytlar majmui sifatida saqlanadi. Pythonda ular bilan ishlash uchun pickle – ichki modul kerak bo‟ladi. Ushbu modul ikkita metodni taqdim etadi:
dump(obj, file) - obyektni ikkilik faylga yozadi;
load(file) - binar fayldan obyektga ma'lumotlarni o'qiydi. O'qish yoki yozish uchun binar faylni ochishda yozishni ("w") yoki o'qish ("r") rejimidan tashqari "b" rejimidan foydalanish kerakligini ham hisobga olish kerak. Masalan, ikkita obyektni saqlash kerak Bo’lsin:
1
|
import pickle
|
2
|
|
3
|
FILENAME = "user.dat"
|
4
|
ism = "ali"
|
5
|
yosh = 25
|
6
|
|
7
|
with open(FILENAME, "wb") as file:
|
8
|
pickle.dump(ism, file)
|
9
|
pickle.dump(yosh, file)
|
10
|
|
11
|
with open(FILENAME, "rb") as file:
|
12
|
ism = pickle.load(file)
|
13
|
yosh = pickle.load(file)
|
14
|
print("Ism: ", ism, "\tYosh: ", yosh)
|
15
|
|
dump() funksiyasi bilan ikki obyekt ketma-ket yoziladi. Shu sababli, fayldan ketma-ketlikda load() funksiyasi yordamida o„qiganimizda mos ravishda yozilgan obyektlarni olamiz. Dastur ishlaganda konsol ekraniga quyidagilar chiqariladi:
Shu tarzda, faylga obyektlar to‟plamini saqlashimiz va undan o‟qib olishimiz mumkun:
1
|
import pickle
|
2
|
|
3
|
FILENAME = "users.dat"
|
4
|
|
5
|
users = [
|
6
|
["Ali", 25, True],
|
7
|
["Sobir", 32, False],
|
8
|
["Dilnoza", 14, False]
|
9
|
]
|
10
|
|
11
|
with open(FILENAME, "wb") as file:
|
12
|
pickle.dump(users, file)
|
13
|
|
14
|
with open(FILENAME, "rb") as file:
|
15
|
users_from_file = pickle.load(file)
|
16
|
for user in users_from_file:
|
17
|
print("Ism: ", user[0], "\tYosh: ", user[1],
|
18
|
"\tUylangan(turmushga chiqan): ", user[2])
|
Faylga dump() funktsiyasidan foydalanib qanday obyekt yozilsa, fayldan load() funksiyasi orqali xuddi shu obyekt o‟qiladi. Natijaning konsolga chiqarilishi:
1
|
Ism: Ali Yosh: 25 Uylangan(turmushga chiqan): True
|
2
|
Ism: Sobir Yosh: 32 Uylangan(turmushga chiqan): False
|
3
|
Ism: Dilnoza Yosh: 14 Uylangan(turmushga chiqan): False
|
XULOSA
Dostları ilə paylaş: |