background image

Στα αρχεία κειμένου (χωρίς ένα b στη σειρά αναμονής), 

αναζητείται   μόνο   σε   σχέση   με   την   αρχή   του   αρχείου 
επιτρέπεται (με εξαίρεση όταν ζητείται το τέλος του αρχείου 
με   αναζήτηση(0,   2))   και   η   μόνες   έγκυρες   offset   τιμές 
επιστρέφονται από την f.tell(), ή  είναι μηδέν. Οποιαδήποτε 
άλλη τιμή μετατόπισης παράγει απροσδιόριστη συμπεριφορά. 

Όταν   τελειώσετε   με   ένα   αρχείο,   καλέστε   f.close()   για 

να   το   κλείσετε   και   να   ελευθερώσει   τυχόν   πόρους   του 
συστήματος που λαμβάνονται από το άνοιγμα του αρχείου. Μετά 
την   κλήση   f.close(),   αν   κάποιο   όρισμα   χρησιμοποιήσει   το 
αντικείμενο του αρχείου θα αποτύχει αυτόματα.

>>> 

f

.

close()

>>> 

f

.

read()

Traceback (most recent call last):

  File 

"<stdin>"

, line 

1

, in ?

ValueError

: I/O operation on closed file

Είναι   καλή   πρακτική   να   χρησιμοποιούνται   οι   λέξεις-

κλειδιά όταν ασχολείστε με τα αντικείμενα του αρχείου. Αυτό 
έχει το πλεονέκτημα ότι το αρχείο έχει κλείσει σωστά μετά 
την   ολοκλήρωση   της   διεργασίας,   ακόμη   και   αν   μια   εξαίρεση 
τεθεί στην πορεία. Επίσης, γραπτώς είναι πολύ μικρότερη από 
ό,τι ισοδύναμα τελικά τμήματα:

>>> 

with

 

open

(

'workfile'

'r'

as

 f:

... 

    read_data 

=

 f

.

read()

>>> 

f

.

closed

True

Οι   συμβολοσειρές   μπορούν   εύκολα   να   γραφτούν   και   να 

διαβαστούν   από   ένα   αρχείο.   Οι   αριθμοί   απαιτούν   λίγη 
περισσότερη   προσπάθεια,   αφού   η   μέθοδος   read()   επιστρέφει 
μόνο αλφαριθμητικά, τα οποίες θα πρέπει να περάσουν σε μια 
λειτουργία, όπως η int() , η οποία λαμβάνει ένα string όπως 
το   '123   '   και   επιστρέφει   την   αριθμητική   τιμή   123   .   Όταν 
θέλετε να αποθηκεύσετε πιο σύνθετους τύπους δεδομένων, όπως 
ένθετες λίστες τα λεξικά , η ανάλυση σε συνέχειες γίνεται 
περίπλοκη.

http://arch.icte.uowm.gr

 - A Mini greek notebook for Learning Python Programming 

58