Η python προσφέρει ένα μηχανισμό για να διαβάζετε αρχεία κειμένου και να επεξεργάζεστε τα περιεχόμενά τους. Αυτός ο μηχανισμός είναι η εντολή open(). Η open() αναθέτει σε μια μεταβλητή ένα ειδικό αντικείμενο που λέγεται file object, και σας δίνει τη δυνατότητα να διαχειριστείτε το αρχείο.
f = open("file.txt", "r")
Η δεύτερη παράμετρος (όρισμα) της open, μπορεί να πάρει διάφορες τιμές, αλλά εδώ θα μας απασχολήσουν η “r”, η “w” και η “rw”. Η πρώτη σημαίνει πως ανοίγετε το αρχείο για ανάγνωση (read), η δεύτερη για γράψιμο (write), ενώ η τρίτη και για τα δύο.
Το file object παρέχει μερικές χρήσιμες μεθόδους για ανάγνωση των περιεχομένων του αρχείου και εγγραφή σε αυτό:
filename = raw_input('Enter filename to read: ')
f = open(filename, 'r')
print f.read()
f.close()
filename = raw_input('Enter filename to write: ')
f = open(filename, 'w')
data = raw_input('Text: ')
f.write(data)
f.close()
import sys
infile, outfile = open(sys.argv[0]), open(sys.argv[1], 'w')
outfile.write(infile.read())
Παρατηρήστε ότι αφού τελειώσουμε το γράψιμο ή την ανάγνωση ενός αρχείου, είναι καλό να καλούμε τη μέθοδο close() πάνω του.
Η read() που είδαμε παραπάνω διαβάζει όλο το περιεχόμενο του αρχείου (το οποίο μπορούμε να αποθηκεύσουμε σε μια μεταβλητή). Εάν όμως θέλουμε να επεξεργαστούμε το αρχείο, ή να αντλήσουμε πληροφορίες από τα περιεχόμενά του, είναι μάλλον πιο χρήσιμο να πάρουμε μια λίστα με τις γραμμές του. Αυτό κάνει η readlines():
import sys
f = open(sys.argv[1])
i = 1
for line in f.readlines():
print str(i) + ': ' + line,
i += 1
f.close()
Θυμηθείτε ότι η for παίρνει μια λίστα, και προσπαθήστε να καταλάβετε τι θα κάνει αυτό το πρόγραμμα. Τρέξτε το για να δείτε εάν είχατε δίκιο, είναι το read_line_by_line.py. Θα πρέπει να του δώσετε και ένα όνομα αρχείου ως όρισμα.