Friday, July 10, 2015

თავი 7 (7,1 - 7,2)



                თავი 7

                 ფაილები

7.1 Persistence

უკვე ვისწავლეთ როგორ დავწეროთ პროგრამები და დავუკავშიროთ ჩვენი გეგმები ცპ - ს პირობითი გახორციელებებით, ფუნქციებით და გამეორებებით. ვისწავლეთ როგორ შევქმნათ და გამოვიყენოთ მონაცემთა სტრუქტურები ძირითად მეხსიერებაში. ცპ და მეხსიერება ისაა, სადაც ჩვენი პროგრამა მუშაობს. ესაა ადგილი სადაც "ფიქრობს", მაგრამ თუ გავიხსენებთ ჩვენს დისკუსიას ტექნიკის არქიტექტურაზე, როცა ენერგია გამოირთვება, ცპ - ში და ძირითად მეხსიერებაში ყველაფერი იშლება. აქამდე ჩვენი პროგრამები იყო მხიარული სავარჯიშოები პითონის სასწავლად.




ამ თავში ჩვენ დავიწყებთ მუშაობას დამატებით მეხსიერებასთან (ან ფაილებთან). დამატებითი მეხსიერება არ იშლება მაშინაც კი, როცა ენერგია გამორთულია. ან USB ფლეშ დრაივის  შემთხვევაში ჩვენი პროგრამის მონაცემები შეიძლება ამოვიღოთ სისტემიდან და გადავიტანოთ სხვა სისტემაში.

თავიდან ფოკუსირებული ვიქნებით წავიკითხოთ და დავწეროთ ტექსტური ფაილები  იმათ მსგავსად, რაც გავაკეთეთ ტექსტურ რედაქტორში. მოგვიანებით ვნახავთ როგორ ვიმუშაოთ მონაცემთა ბაზების ფაილებთან, რომელიცაა ბინარული ფაილები - სპეციალურად დამზადებული, რომ მონაცემთა ბაზის  პროგრამით იქნას წაკითხული და დაწერილი.



7.2. ფაილების გახსნა

როცა ფაილის წაკითხვა ან დაწერა გვინდა(მყარ დისკზე), პირველად ფაილი უნდა გავხსნათ open . ფაილის გახსნა უკავშირდება ოპერაციულ სისტემას, რომელმაც იცის თუ სად ინახება ყველა ფაილის მონაცემები.  როცა ხსნი, შენ ეკითხები ოპერაციულ სისტემას, რომ იპოვნოს ფაილი სახელით და დარწმუნდეს რომ ფაილი არსებობს. ამ მაგალითში გავხსნით ფაილს mbox.txt , რომელიც უნდა იყოს შენახული იმავე საქაღალდეში, სადაც შენ ხარ როცა პითონს ჩართავ. შეგიძლია გადმოწერო ფაილი www.py4inf.com/code/mbox.txt

>>> fhand = open('mbox.txt')
>>> print fhand
<open file 'mbox.txt', mode 'r' at 0x1005088b0>


open თუ შესრულდა, ოპერაციული სისტემა დააბრუნებს ფაილის სათაურს (handle.). ფაილის სათაური არ რის ფაილის ნამდვილი მონაცემები, მაგრამ ესაა "სათაური", რომელიც შეგვიძლია მონაცემების წასაკითხად გამოვიყენოთ. სათაურს გიბრუნებს მაშინ, როცა მოთხოვნილი ფაილი არსებობს და გაქვს მისი წაკითხვის უფლება.



ფაილი თუ არ არსებობს, open არ მოხდება, სათაურს არ დააბრუნებს რომ ამ ფაილზე წვდომა გქონდეს.

>>> fhand = open('stuff.txt')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
IOError: [Errno 2] No such file or directory: 'stuff.txt'

მოგვიანებით ჩვენ გამოვიყენებთ try და except - ს, რომ უფრო მოხდენილად გავუმკლავდეთ სიტუაციას როცა ვცდილობთ ფაილის გახსნას და ფაილი არ არსებობს.