Professional Documents
Culture Documents
Προγραμματισμός Υπολογιστών ΓΠ
Αρχεία
Ένα αρχείο κειμένου είναι ένα αρχείο το οποίο περιέχει μια ακολουθία χαρακτήρων και
βρίσκεται αποθηκευμένο σε ένα μέσο μόνιμης αποθήκευσης, όπως ο σκληρός δίσκος.
Ένα αρχείο για να χρησιμοποιηθεί, πρέπει να το ανοίξουμε με την ενσωματωμένη
συνάρτηση open()
και να κλείσει με τη συνάρτηση close().
Η συνάρτηση open() μας επιστρέφει ένα αντικείμενο του αρχείου (δεν χρειάζεται
ενσωμάτωση βιβλιοθηκης).
η σύνταξή της είναι : open (“όνομα_αρχείου”, “τρόπος προσπέλασης”)
«όνομα του αρχείου»: το αναγνωρίζει το λειτουργικό σύστημα.
«τρόπος προσπέλασης»: καθορίζει τον τρόπο προσπέλασης του αρχείου
Αρχεία : τρόπος προσπέλασης
Παράδειγμα
>>> fin = open('words.txt')
>>> print fin
Άνοίγουμε το αρχείο κειμένου
“words.txt” και αποδίδουμε το
αποτέλεσμα στον περιγραφέα αρχείου
fin.
Τυπώνουμε τα χαρακτηριστικά του
περιγραφέα fin.
Όλες οι λειτουργίες που πρόκειται να
εκτελεστούν στο αρχείο words.txt θα
εκτελεστούν μέσω του περιγραφέα fin.
Αν δε χρησιμοποιηθεί το δεύτερο όρισμα,
τότε θεωρείται εξ ορισμού (προεπιλογή)
ότι είναι το “r”.
Αρχεία: Πως δημιουργούμε νέο αρχείο;
fin=open("files.txt","w")
fin.write("monday\n") Θα δημιουργήσει το παρακάτω αρχείο
fin.write("tuesday\n") monday
fin.write("wednesday\n") tuesday
wednesday
fin.write("thursday\n") thursday
print fin.read()
ΛΑΘΟΣ γιατί
έχουμε ανοίξει το
αρχείο μόνο για
γράψιμο
Αρχεία: Ανάγνωση/Εγγραφή
Παράδειγμα ανάγνωσης με for
fin=open(“word.txt","r")
This is line 1
for i in fin: This is line 2
print i, This is line 3
Παράδειγμα εγγραφής σε αρχείο με for
This is line 1
fin=open(“words.txt","a") This is line 2
Week=['sunday', 'monday', 'tuesday', This is line 3
'wednesday', 'thursday', 'friday','saturday'] sunday
monday
for i in Week: tuesday
fin.write(i+"\n") wednesday
fin.close()
thursday
friday
print (fin.closed) saturday
Αρχεία: Εντοπισμός θέσης (1/3)
fin.tell() επιστρέφει έναν ακέραιο που περιέχει την τρέχουσα θέση στο αρχείο,
υπολογισμένη σε χαρακτήρες (bytes) από την αρχή του αρχείου. Η επόμενη ανάγνωση ή
εγγραφή θα γίνει σε εκείνη τη θέση του αρχείου.
την fin.seek() (offset[, from_what]) αλλάζουμε την τρέχουσα θέση του αρχείου,
Η θέση υπολογίζεται προσθέτοντας offset (πλήθος bytes) σε ένα σημείο αναφοράς, το
οποίο επιλέγεται από το from_what όρισμα.
Αν το from_what έχει τιμή:
0, μετρά από την αρχή του αρχείου
1, χρησιμοποιεί την τρέχουσα θέση του αρχείου
2, χρησιμοποιεί το τέλος του αρχείου.
Αρχεία: Εντοπισμός θέσης (2/3)
inputfile = open(''input_file.txt'',''r'')
outputFile = open(''output_file.txt'',''w'')
linecounter = 1
for line in inputfile:
outputFile.write(str(linecounter)+''. ''+line)
linecounter = linecounter + 1
inputfile.close()
outputFile.close()
Δραστηριότητα 2: Να γραφεί συνάρτηση σε Python που να δέχεται ένα αρχείο
και να επιστρέφει το πλήθος των γραμμών του αρχείου.
def linecount(filename):
count = 0
for line in open(filename):
count += 1
return count
print linecount('demo.py')
Δραστηριότητα 3: Να γράψετε πρόγραμμα στη γλώσσα Python, το οποίο θα
δέχεται ως είσοδο το όνομα ενός αρχείου, θα εμφανίζει τα περιεχόμενά του κατά γραμμή και στη
συνέχεια θα γράφει σε ένα άλλο αρχείο, τις γραμμές του αρχείου στην αντίστροφη σειρά.
for i in range(len(lines)-1,-1,-1):
g.write(lines[i])
print lines[i]
f.close()
g.close()
Δραστηριότητα 4:Τι πιστεύετε ότι θα συμβεί, όταν θα εκτελεστούν τα παρακάτω
σενάρια. Τεκμηριώστε την άποψή σας.
f = open(''output.txt'', ''r'')
print f.readline()
print f.read()
f.close()
Δραστηριότητα 4:Τι πιστεύετε ότι θα συμβεί, όταν θα εκτελεστούν τα παρακάτω
σενάρια. Τεκμηριώστε την άποψή σας. (Λύση)
# List Comprehension
# Δημιουργία λίστας τετραγώνων αριθμών από 1.. 10
my_list = [i**2 for i in range(1,11)]
# Άνοιγμα αρχείου για εγγραφή
f = open('output.txt', 'w')
# Γράψε τα στοιχεία της λίστας στο αρχείο
for item in my_list:
f.write(str(item) + '\n') # δέχεται string όρισμα η write
f.close()
# Άνοιξε το αρχείο και εκτύπωσε τα περιεχόμενά του
f = open('output.txt', 'r')
print f.readline()
print f.read()
f.close()