O‘zbеkiston rеspublikasi oliy va o‘rta maxsus ta’lim vazirligi andijon davlat univеrsitеti axborot tеxnologiyalari va kompyutеr injiniringi fakultеti axborot tеxnologiyalari kafеdrasi kurs ishi
Python dasturlash tilida fayllar bilan ishlash
Download 218.51 Kb.
|
Ostonaqulova O\'g\'iloy
- Bu sahifa navigatsiya:
- Ostonaqulova Ogiloyning “Python dasturlash tilida fayllarni yozish, o‘qish, qidirish
Python dasturlash tilida fayllar bilan ishlash fayl tarkibidagi ma’lumotlarni
o‘chirish Kompyuterimizda aksar ma'lumotlar fayl ko'rinishida saqlanadi. Bu xoh matn bo'lsin, xoh jadval, xoh rasm, xoh video. Fayllarda turli ma'lumotlar saqlanishi mumkin, ob-havo ma'lumotlari, yillik hisobotlar, mijozlarning telefon raqamlari, talabalarning baholari va hokazo. Ko'pgina holatlarda dastur davomida katta ma'lumotlarni aynan fayllardan o'qib olish talab qilinadi. Ayniqsa, tahliliy dasturlarda fayl ko'rinishida saqlangan, katta hajmdagi jadvallar bilan ishlash tabiiy. Lekin fayllar bilan ishlash boshqa holatlarda ham ko'p asqotadi, misol uchun oddiy matnni html ko'rinishga o'tkazishni avtomatlashtiruvchi dastur yozishda. Fayllar bilan ishlashning birinchi qadami bu fayldagi ma'lumotlarni kompyuter xotirasiga ko'chirish. Buning bir necha usuli bor, quyida ular bilan tanishamiz. FAYLNI TO'LIQLIGACHA O'QISH Boshlanishiga bizga fayl kerak. Keling, yangi pi.txt faylini yaratamiz, va ichiga quyidagi matnni joylaymiz: 3.1415926535 8979323846 2643383279 Uch qatordan iborat faylimiz π sonining qiymatini saqlaydi (30 xona aniqlik bilan). Fayli to'liq o'qish uchun quyidagi kodni yozamiz: with open('pi.txt') as fayl: pi = fayl.read() Kodni tahlil qilamiz: Birinchi qatorda open() funksiyasi yordamida faylni ochayapmiz. Bunda funksiyaga argument sifatida fayl nomini berayapmiz. Bu yerda biz ochayotgan fayl va dasturimiz bir papkada bo'lishi muhim. open() funksiyasi faylni obyekt sifatida qaytaradi, as operatori yordamida esa biz obyektimizga fayl deb nom berayapmiz. Ikkinchi qatorda .read() metodi yordamida fayl obyektining tarkibidan bizga kerakli matnni olib, yangi, PI o'zgaruvchisiga yuklayabmiz. with operatorining vazifasi biz fayl bilan ishlab bo'lganimizdan so'ng faylni yopish. Yuqoridagi misolda, 2-qatordan so'ng Python zudlik bilan faylni yopadi. Yuqorida ko'rgan usulimiz fayl bilan ishlashning eng xavfsiz usuli. Aslida biz fayllarni to'g'ridan-to'g'ri fayl=open('pi.txt') yordamida ochishimiz, fayl bilan ishlab bo'lgandan so'ng esa fayl.close() komandasi yordamida faylni yopishimiz ham mumkin edi: fayl = open('pi.txt') PI = fayl.read() print(pi) fayl.close() Lekin, bu usul xavfli hisoblanadi va tavsiya qilinmaydi. Gap shundaki, open() funksiyasi yordamida faylni ochganimizdan keyin, toki close() metodini chaqirgunga qadar faylimiz ochiq holatda turadi. Agar, faylni vaqtida yopmasak, yoki fayl yopilmasidan avval dasturimiz to'xtab qolsa fayl tarkibiga ziyon yetishi, ma'lumotlar yo'qotilishi mumkin. Misol uchun, boshqa dasturlarda ham (masalan Microsoft Word) faylni yopmasdan oldin kompyuteringiz o'chib qolsa, yoki dastur behosdan yopilib ketsa faylingizga ziyon yetkani kabi. Shuning uchun open() funksiyasiga with orqali murojat qilganimizda, faylimiz with blokining oxirigacha ochiq turadi, va with tugashi bilan, fayl ham yopiladi. Demak fayl ustidagi amallarni biz with bloki ichida bajarib olishimiz kerak. Keling endi pi ning qiymatini konsilga chiqaramiz: >>> print(pi) 3.1415926535 8979323846 2643383279 Matn faylda qanday saqlangan bo'lsa, huddi shu ko'rinishda konsolga chiqdi. Saqlangan ma'lumot son bo'lsada, fayldan o'qiganimizda qaytgan qiymat matn ko'rinishida bo'ladi. Matnni songa o'tkazish uchun, unga biroz ishlov beramiz: pi = pi.rstrip() # qator ohiridagi bo'shliqlarni olib tashlaymiz pi = pi.replace('\n','') # qator tashlash belgisini almashtiramiz pi = float(pi) # matnni float (o'nlik) songa o'tkazamiz print(pi) Natija: 3.141592653589793 .replace() metodi matn tarkibidagi biror harf yoki belgini boshqa harf yoki belgi bilan almashtirish uchun ishlatiladi. PAPKA ICHIDAGI FAYLLARNI OCHISH Agar siz ochayotgan fayl dasturimiz bilan bir papkada emas, shu papka ichidagi papkada joylashgan boʻlsa, fayl nomidan avval papka nomi yoziladi: with open('data/pi.txt') as fayl: pi = fayl.read() Agar papkalar bir necha qavat boʻlsa, fayl nomini va ungacha boʻlgan papkalarni alohida yozib olgan afzal: faylnomi = 'data/math/numbers/pi.txt' with open(faylnomi) as fayl: pi = fayl.read() Windowsda papkalar orasida "\" belgisi ishlatilsada, Pythonda "/" belgisini ishlataveramiz. Agar \ belgisini ishlatishni istasangiz, bu belgini 2 marta yozing: C:\\python\\darslar\\data FAYLNI QATORMA-QATOR OʻQISH Baʻzida faylni toʻliqligicha emas, qatorma-qator oʻqish talab qilinishi mumkin. Masalan, faylda talabalrning ismi yoki kundalik ob-havo maʻlumotlari saqlangdanda va hokazo. Bunday hollarda for tsiklidan foydalanamiz: filename = 'data/talabalar.txt' with open(filename) as file: for line in file: print(line) Natija:
Ochilov temur Asadov shohjahon Tavakkalov Muzaffar Qatorlarni ro'yxat ko'rinishida saqlab olish uchun, .readlines() metodidan foydalanamiz. with open(filename) as file: talabalar = file.readlines() print(talabalar) Natija: [' Haqnazarova dilobar \n', ' Ochilov temur \n', ' Asadov shohjahon \n', ' Tavakkalov Muzaffar '] Har bir talaba ismidan so'ng qator tashlah belgisi (\n) tushib qolgan. Biz bu belgilarni .rstrip() metodi yordamida olib tashlashimiz mumkin: talabalar = [talaba.rstrip() for talaba in talabalar] print(talabalar) Natija: [' Haqnazarova dilobar ', ' Ochilov temur ', ' Asadov shohjahon ', ' Tavakkalov Muzaffar '] FAYLGA YOZISH Ma'lumotlarni saqlashning eng qulay usuli bu faylga yozish. Dasturimiz bajarilishdan to'xtaganidan so'ng, xotiradagi ma'lumotlar o'chib ketishi mumkin, lekin faylga yozilgan ma'lumotlar saqlanib turaveradi. Fayllarni kelajakda qaytdan xotiraga yuklab, dasturimizni to'htagan joyidan davom etishimiz mumkin. Yuqorida biz faylni ochishda open() funksiyasidan foydalandik, va yagona argument sifatida fayl nomini berdik. Bunda fayl faqatgina o'qish uchun ochiladi, unga yozib bo'lmaydi. Faylga ma'lumot yozish uchun open() funksiyasiga murojat qilishda fayl nomidan tashqari yana bir argument beramiz. Ikkinchi argument faylni aynan nima maqsadda ochishimizni bildiradi. Argumentlar quyidagilardan iborat bo'lishi mumkin:
YANGI FAYLGA YOZISH Yangi faylga ma'lumot yozish uchun open() funksiyasini chaqirishda 'w' (write) argumentidan foydalanamiz. Ochilgan faylga ma'lumot qo'shish uchun esa .write() metodini chaqiramiz. faylnomi = 'ustozlar.txt'# ochilayotgan (yaratilayotgan) fayl nomi with open(faylnomi,'w') as fayl: fayl.write('anvar narzullaev') # faylga yozilayotgan ma'lumot open() funksiyasini 'w' argumenti bilan chaqirganimizda ehtiyot bo'lishimiz kerak, sababi agar bunday fayl mavjud bo'lsa, uning ichidagi barcha ma'lumotlar o'chib ketadi. Faylga yozayotgan ma'lumotlarimiz matn ko'rinishida bo'lishi kerak. Aks holda dasturimiz xato beradi. faylnomi = 'new_file.txt' ism = ' Haqnazarova dilobar ' tyil = 1996 with open(faylnomi,'w') as fayl: fayl.write(ism) fayl.write(tyil) Natija: TypeError: write() argument must be str, not int Xatoning oldini olish uchun sonlarni avval str() funksiyasi yordamida matnga keltirib olamiz. faylnomi = 'new_file.txt' ism = ' Haqnazarova dilobar ' tyil = 1996 with open(faylnomi,'w') as fayl: fayl.write(ism) fayl.write(str(tyil)) Fayllar matn formatida yoziladi, va biz ularni istalgan matn muharriri yordamida ochib ko'rishimiz mumkin. Faylda saqlangan ma'lumotlar Afsuski, faylga bir nechta ma'lumot yozganimizda, ma'lumotlar alohida qatordan emas, bir qatorda bir-biriga qo'shib qo'shib yoziladi. Buning oldini olishimiz uchun matn so'ngida \n belgisini qo'shib ketishimiz kerak bo'ladi: faylnomi = 'new_file.txt' ism = 'Haqnazarova dilobar' tyil = 1996 with open(faylnomi,'w') as fayl: fayl.write(ism+'\n') fayl.write(str(tyil)+'\n') Fayldagi ma'lumotlar yangi qatordan saqlandi FAYLGA MA'LUMOT QO'SHISH Agar mavjud faylga ma'lumot qo'shish talab qilinsa, open() funksiyasiga murojat qilishda 'a' (append) argumentidan foydalanamiz. Bunda yangi qo'shilgan ma'lumotlar faylning oxiriga qo'shiladi. with open(faylnomi,'a') as fayl: fayl.write('Ochilov temur\n') fayl.write('1998') Faylga yangi ma'lumotlar qo'shildi Agar biz ochayotgan fayl mavjud bo'lmasa, Python yangi fayl yaratadi. O'ZGARUVCHILARNI FAYLDA SAQLASH Yuqorida biz ma'lumotlarni matn ko'rinishida saqlashni ko'rdik. Agar dastur davomida turli o'zgaruvchilarni faylda saqlash talab qilinsa pickle modulidan foydalanamiz. Pickle ma'lumotlarni biz qanday ko'rinishda bersak, shunday ko'rinishda faylga yozadi. Yuqoridagi usuldan farqli ravishda, pickle yordamida yozilgan fayllarning tarkibini Pythondan tashqarida ko'rib bo'lmaydi. PICKLE FAYLGA YOZISH Pickle dan foydalanish uchun biz avval bu modilni import qilamiz. Faylno ochishda esa, open() funksiyasiga ikkinchi argument sifatida 'wb' (write binary) beramiz, ya'ni ikkilik sanoq tizimida yozishni ko'rsatamiz. Faylga yozish uchun esa pickle.dump() metodidan foydalanamiz: import pickle talaba1 = {'ism':'dilobar', 'familiya':'Haqnazarova', 'tyil':1996, 'kurs': 1} talaba2 = {'ism':'temur', 'familiya':'Ochilov', 'tyil':1998, 'kurs': 1} with open('info','wb') as file: pickle.dump(talaba1,file) pickle.dump(talaba2,file) Yuqorida fayl nomini yozishda uning turini ko'rsatmadik, sababi, avval aytganimizdek bu fayllar Pythondan tashqarida ochilmaydi va biz buning oldini olishimiz kerak. Aslida fayl nomiga .txt qo'shimchasini ham qo'shishimiz mumkin, bu bilan dastur xato ishlamaydi, lekin bu bizni kelajakda chalg'itishi mumkin. Istasangiz faylga .dat (data so'zidan olingan) qo'shimchasini qo'shib qo'yishingiz mumkin (info.dat). PICKLE FAYLDAN O'QISH Pickle fayldan o'qish uchun open() funksiyasini 'rb' (read binary) argumenti bilan chaqiramiz. O'zgaruvchilarni bitta faylga yozganimizda, har bir o'zgaruvchi alohida qatordan yoziladi. Fayldan o'qishda ham har bir qatorni alohida o'qishimiz kerak bo'ladi: with open('info','rb') as file: talaba1 = pickle.load(file) talaba2 = pickle.load(file) O'zgaruvchilar tarkibini ko'ramiz: print(talaba1) Natija: {'ism': 'dilobar', 'familiya': 'Haqnazarova', 'tyil': 1996, 'kurs': 1} print(talaba2) Natija:{'ism': 'temur', 'familiya': 'Ochilov', 'tyil': 1998, 'kurs': 1} Adashib ketmaslik uchun, alohida o'zgaruvchilarni alohida fayllarga saqlash tavsiya qilinadi. Fayl tarkibidagi ma’lumotlarni o‘chirish Fayl tarkibidagi ma’lumotlarni o‘chirish uchun Python dasturlash tili tarkibida imkoniyat mavjud. Ma’lumot yozilgan faylni tozalash yoki uning tarkibidagi elementlarni o‘chirish uchun quyidagi kodni yozish kerak. f=open('test.txt', 'w') Yuqoridagi dastur asosida test.txt fayli tozalandi. Python dasturlash tili tarkibida fayllardan foydalanish jarayonlari yuqoridagi holatlar bo‘yicha amalga oshiriladi. Fayldan ma’lumot o‘qish, faylga ma’lumot yozish va fayldan ma’lumot o‘chirish jarayonlari asosida fayllarga tegishli masalalarni hal etish imkoniyati mavjud. Bu yerda: f-fayl o'zgaruvchisi, matn.txt-biz foydalanadigan fayl, rejim-faylni ochish rejimi. Quyidagi jadvalda rejimlar berilgan.
Xulosa Xulosa sifatida shuni aytish kerakki Python dasturlash tilining yaratilish tarixi, imkoniyatlari va Python dasturlash tilini Windows operatsion tizimida o`rnatish haqida o‘rgandim. Python dasturida ishlaydigan foydalanuvchilar uchun uning sintaksisi, asosiy operatorlari, fayllar, funksiyalar bilan ishlash sanoq sistemalari va satrlar bilan ishlash haqida muhim zaruriy ma’lumotlar keltirilgan. Qo`llanmani o`qigan har bir qiziquvchi Python dasturini o`rnatish boshqa odatiy dasturlarni o`rnatish kabi hech qanday qiyinchiliksiz o`rnatilishini, tilning sintaksisi o`zi kabi sodda va oson ekanligini, o`zgaruvchilarning tipini e’lon qilinmasligini, shuningdek sonlar bilan ishlaganda nafaqat butun va haqiqiy sonlar ustida balki kompleks sonlar ustida ham amallar bajarishni ko`rsatilgan misollar yordamida o`rgana oladi va uni amaliyotda bajara oladi. Satrlar bilan ishlash va ular ustida amallar bajarish haqida ham yetarlicha ma’lumotlar keltirilgan. Ushbuda yana ro`yxat, kortej, lug`at va to`plam tushunchalari va ularni qanday yaratish mumkinligi ular ustida amallar bajarish haqida ma’lumotlar keltirilib misollar yordamida tushuntirilgan. Shuningdek, modul tushunchasi, Python dasturining juda boy kutubxonaga ega ekanligi haqidagi ma’lumotlar berilgan bo`lib, ko`plab modullar shu jumladan sys, copy, time, math, cmath, random, os modullari ularning funksiyalari va qo`llanilishi haqida yozilib, misollar keltirish yordamida amaliyotda qo`llab tushuntirilgan. O`quvchilar o’z ustilarida mustaqil ishlashlari va Python dasturida ishlash bo`yicha bilim saviyalarini oshirish uchun standart modullardan foydalanishlari taklif etilgan. Python dasturlash tilining afzallik tomonlari tushuntirib berildi. O’zbekiston Respublikasi Oliy va O’rta maxsus ta’lim Vazirligi Andijon davlat universiteti Axborot texnologiyalari va kompyuter injinering fakulteti Informatika o‘qitish metodikasi yo’nalishi 4 kurs 413-gurux talabasi Ostonaqulova O'g'iloyning “Python dasturlash tilida fayllarni yozish, o‘qish, qidirish, Download 218.51 Kb. Do'stlaringiz bilan baham: |
ma'muriyatiga murojaat qiling