Στα αρχεία κειμένου (χωρίς ένα 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 . Όταν
θέλετε να αποθηκεύσετε πιο σύνθετους τύπους δεδομένων, όπως
ένθετες λίστες τα λεξικά , η ανάλυση σε συνέχειες γίνεται
περίπλοκη.
- A Mini greek notebook for Learning Python Programming
58