Αρχεία

Τα δεδομένα τα οποία χρειάζεται ένα πρόγραμμα μπορούν να διαβαστούν από ένα αρχείο. Επίσης τα αποτελέσματα τα οποία παράγονται μπορούν να καταγραφούν (να εκτυπωθούν) σε αρχείο. Ένα αρχείο μπορεί να συνδεθεί με το πρόγραμμά μας μέσω της εντολής open.


f = open('filename.dat','w')

Η παραπάνω εντολή δημιουργεί αρχείο με όνομα filename.dat και το συνδέει με το πρόγραμμά μας με σκοπό να γραφούν ('w' - write) στο αρχείο νέα αποτελέσματα. Η σύνδεση του αρχείου γίνεται μέσω ενός νέου αντικειμένου της python στο οποίο δώσαμε το όνομα f. Από εδώ και κάτω μπορούμε να επεμβαίνουμε στο αρχείο (με το όνομα filename.dat) χρησιμοποιώντας τη μεταβλητή f.

Παράδειγμα. Γράψτε μία σειρά ακεραίων καθώς και το τετράγωνό τους και την τετραγωνική τους ρίζα σε ένα αρχείο.


import math
f = open('test.dat','w')
for i in range(10):
    s = '{:4d}  {:5d}   {:5.3f}\n'.format(i,i**2,math.sqrt(i))
    f.write(s)
f.close()

Ακολουθήσαμε τα εξής βήματα:

Θα δούμε πώς μπορούμε να γράψουμε δεδομένα (αποτελέσματα) σε ένα αρχείο.

Παράδειγμα. (μέθοδος read) Διαβάστε το περιεχόμενο ενός αρχείου και εκτυπώστε το στην οθόνη.


f = open('test.dat','r')
s = f.read()
f.close()
print(s)

Ακολουθήσαμε τα εξής βήματα:

Ένα αρχείο το οποίο είναι πιθανόν πολύ μεγάλο είναι οποσδήποτε προτιμότερο να διαβαστεί κατά τμήματα. Η μέθοδος readline() διαβάζει μία γραμμή από αρχείο.

Παράδειγμα. (μέθοδος readline) Διαβάστε το περιεχόμενο ενός αρχείου κατά γραμμές και εκτυπώστε τες στην οθόνη.


f = open('test.dat','r')
while True:
    s = f.readline()
    if s == '': break
    print(s,end='')    # είτε: print(s[:-1]), print(s.rstrip())
f.close()

Ακολουθήσαμε τα εξής βήματα:

Ερώτηση. Τι θα συμβεί με το παραπάνω πρόγραμμα αν το αρχείο περιέχει σε κάποιο σημείο μία κενή γραμμή;

Παράδειγμα. (Ανακύκλωση στο αντικείμενο του αρχείου) Υπάρχει μία ακόμα μέθοδος για να διαβάσουμε ένα αρχείο χρησιμοποιώντας απευθείας το αντικείμενο του αρχείου. Μπορούμε να διαβάσουμε το περιεχόμενο ενός αρχείου κατά γραμμές.


f = open('test.dat','r')
for line in f:
    print(line,end='')
f.close()

Ακολουθήσαμε τα εξής βήματα:

Ερώτηση. (Μέθοδος readlines) Δείτε πώς μπορείτε να διαβάσετε το περιεχόμενο αρχείου με τη μέθοδο readlines (όπως στον ακόλουθο κώδικα).


f = open('test.dat','r')
f.readlines()

Προσάρτηση δεδομένων. Μπορούμε να ανοίξουμε ένα αρχείο για προσάρτηση (append) δεδομένων:


f = open('test.dat','a')

Ανάγνωση και αποθήκευση. Μπορούμε να ανοίξουμε ένα αρχείο για ανάγνωση και για αποθήκευση δεδομένων:


f = open('test.dat','r+')

Πρόβλημα. Έστω το αρχείο το οποίο δημιουργείται με τον κώδικα:


import math
f = open('test.dat','w')
for i in range(10):
    s = '{:4d},  {:5d},   {:5.3f}\n'.format(i,i**2,math.sqrt(i))
    f.write(s)
f.close()

Διαβάστε το αρχείο και εκχωρήστε σε μεταβλητές κάθε έναν από τους τρεις αριθμούς σε μία γραμμή του αρχείου. μετά ελέγξτε αν πραγματικά το 2ος αριθμός είναι το τετράγωνο του πρώτου και ο τρίτος είναι η τετραγωνική του ρίζα.


import math
f = open('test.dat','r')
for line in f:
    line = line.split(',')
    i = line[0].strip(); i = int(i)
    i2 = line[1].strip(); i2 = int(i2)
    isq = line[2].strip(); isq = float(isq)
    if i2 != i**2:
        print('line {:3d}:  {:4d} != {:3d}**2'.format(i,i2,i))
    elif abs(isq-math.sqrt(i))>1e-3:
        print('line {:3d}:  {:f} != sqrt({:3d})'.format(i,isq,i))
    else:
        print(i,i2,isq)
f.close()

Μελέτη

Βιβλιογραφία

  1. Python documentation.
  2. J.V. Guttag, Υπολογισμοί και προγραμματισμός με την python.
  3. Δημήτριος Καρολίδης, Μαθαίνετε εύκολα python (Εκδόσεις Καρολίδη, 2016).
  4. Κ. Μαγκούτης, Χ. Νικολάου, Εισαγωγή στον αντικειμενοστραφή προγραμματισμό με Python, (Αποθετήριο "Κάλλιπος", 2016).