Μάθημα : Προγραμματισμός Υπολογιστών Γ' ετος 2025-2026
Κωδικός : 4540050176
-
Θεματικές Ενότητες
-
3.3 Βασικές Ενσωματωμένες συναρτήσεις
-
4.1.2 Δομή επιλογής if
-
4.1.3 Δομή επανάληψης (For-While)
-
4.1.4 For ή While
-
4.2 Συναρτήσεις
-
8.1 Συμβολοσειρές (strings)
-
Λίστες
-
5.1 Δυαδική αναζητηση 5.2 Ταξινόμηση ανταλλαγής (bubble sort)
-
8.3 Στοίβα
-
8.4 Ουρά
-
7.3 Αρθρωματα (Modules)
-
7.3.2 Σύντομη περιγραφή της Πρότυπης βιβλιοθήκης (Standard Library)
-
7.3.3 Πακέτα (Packages)
-
6.Αρχεία
-
11.Αντικειμενοστραφής Προγραμματισμός
-
Τυποι δεδομένων,μεταβλητές, τελεστές,λογικές εκφράσεις
-
3.3 Βασικές Ενσωματωμένες συναρτήσεις
6.Αρχεία
Διαχείριση Αρχείων
Τα περισσότερα προγράμματα που έχουμε δει μέχρι τώρα μπορούν να χαρακτηριστούν ως προσωρινά. Αυτό, με την έννοια ότι τρέχουν για ένα μικρό χρονικό διάστημα και παράγουν κάποια έξοδο, με τα δεδομένα τους (ως είσοδος από το πληκτρολόγιο ή ως έξοδος στην οθόνη), να χάνονται.Σε πολλές όμως περιπτώσεις θέλουμε τα δεδομένα να μη χάνονται.Θέλουμε να διαβάζουμε δεδομένα από ένα αρχείο του υπολογιστή στο οποίο βρίσκονται αποθηκευμένα και να γράφουμε ένα αποτέλεσμα στο ίδιο ή εναλλακτικά σε άλλο αρχείο. Αυτή η διεργασία ανάγνωσης και εγγραφής, ονομάζεται Είσοδος/Έξοδος Αρχείου και στην Python υλοποιείται μέσω ενσωματωμένων συναρτήσεων (μεθόδων)
Ως αρχεία δεδομένων χρησιμοποιούνται συνήθως αρχεία κειμένου. Ένα αρχείο κειμένου είναι ένα αρχείο το οποίο περιέχει μια ακολουθία χαρακτήρων και βρίσκεται αποθηκευμένο σε ένα μέσο μόνιμης αποθήκευσης, όπως ο σκληρός δίσκος
6.2 Ανάγνωση και εγγραφή σε αρχείο
Δημιουργία - Άνοιγμα - Κλείσιμο Αρχείων
Ανοιγμα αρχείου
open ("όνομα_αρχείου", "τρόπος προσπέλασης")
Τρόποι Προσπέλασης:
| "r" | Ανάγνωση (read) |
| "w" |
Εγγραφή (write) -διαγραφή προηγούμενων περιεχομένων |
| "a" |
Προσθήκη (append) - διατήρηση προηγούμενων περιεχομένων |
| "r+" | Άνοιγμα αρχείου και για ανάγνωση και για εγγραφή |
Αν παραλειφθεί, προεπιλεγμένη τιμή είναι το "r".
Παράδειγμα
>>> fin = open('words.txt')
>>> print fin
Στην πρώτη γραμμή ανοίγουμε το αρχείο κειμένου “words.txt” και αποδίδουμε το αποτέλεσμα στον περιγραφέα αρχείου fin. Στη δεύτερη γραμμή τυπώνουμε τα χαρακτηριστικά του περιγραφέα fin. Όλες οι λειτουργίες που πρόκειται να εκτελεστούν στο αρχείο words.txt θα εκτελεστούν μέσω του fin
Δημιουργία αρχείου
open ("όνομα_αρχείου", "w")
open ("όνομα_αρχείου", "a")
Παραδείγματα
f = open("words.txt", "w")
Αν το αρχείο words.txt δεν υπάρχει τότε δημιουργείται ενώ αν υπάρχει, χάνεται το περιεχόμενό του.
f = open("words.txt", "a")
Αν το αρχείο words.txt δεν υπάρχει τότε δημιουργείται ενώ αν υπάρχει, μπορούμε να προσθέσουμε δεδομένα στο τέλος του.
Μέθοδοι διαχείρισης αρχείων
Οι πιο διαδεδομένες μέθοδοι για διάβασμα των περιεχομένων ενός αρχείου, είναι η read() και η readline(), όπου διαβάζει ένα πλήθος χαρακτήρων από την αρχή του αρχείου.
η readline()διαβάζει διαδοχικούς χαρακτήρες από ένα αρχείο μέχρι να συναντήσει το χαρακτήρα νέας γραμμής και επιστρέφει το αποτέλεσμα:
write()Το όρισμα της μεθόδου write πρέπει να είναι συμβολοσειρά. Αν θέλουμε να
εισάγουμε κάτι διαφορετικό, όπως για παράδειγμα έναν αριθμό, ο ευκολότερος τρόπος είναι, να μετατρέψουμε τον αριθμό σε συμβολοσειρά, με χρήση της συνάρτησης str.
>>> x = 52
>>> keimeno.write(str(x)
close()H συνάρτηση close() αναλαµβάνει να κλείσει το αρχείο και να απελευθερώσει
έτσι πόρους του συστήµατος.
tell()H μέθοδος tell() επιστρέφει έναν ακέραιο που περιέχει την τρέχουσα θέση στο αρχείο, υπολογισμένη σε χαρακτήρες (bytes) από την αρχή του αρχείου.
Με άλλα λόγια, η επόμενη ανάγνωση ή εγγραφή θα γίνει σε εκείνη τη θέση του αρχείου
seek() Για να αλλάξουμε την τρέχουσα θέση του αρχείου, μπορούμε να χρησιμοποιήσουμε την seek() (offset[, from_what]). Η θέση υπολογίζεται προσθέτοντας offset (πλήθος bytes) σε ένα σημείο αναφοράς, το οποίο επιλέγεται από το from_what όρισμα. Αν το from_what έχει τιμή 0, μετρά από την αρχή του αρχείου, αν έχει 1, χρησιμοποιεί την τρέχουσα θέση του αρχείου και αν έχει 2, χρησιμοποιεί το τέλος του αρχείου.
seek(Θ,Σ)
όπου Σ λαμβάνει τιμές 0,1,2
Αν Σ=0, πάει στη θέση Θ μετρώντας από την αρχή του
αρχείου
Αν Σ=1, προχωράει Θ θέσεις ξεκινώντας από την
τρέχουσα θέση
Αν Σ=2, πάει στη θέση Θ μετρώντας από το τέλος του
αρχείου
Αν δεν προσδιοριστεί, θεωρείται ότι είναι Σ=1.
6.3 Πρόσθετες λειτουργίες σε αρχεία
Όταν ένα αρχείο έχει ανοίξει, μπορούμε να ανακτήσουμε διάφορες χρήσιμες πληροφορίες σχετικά με αυτό. Ακολουθεί μια λίστα με όλα τα σχετικά χαρακτηριστικά:
| Χαρακτηριστικό | Περιγραφή |
| file.closed | Επιστρέφει true, αν το αρχείο είναι κλειστό, false, σε διαφορετική περίπτωση |
| file.mode | Επιστρέφει τον τρόπο προσπέλασης στο αρχείο που έχουμε ανοίξει |
| file.name | Επιστρέφει το όνομα του αρχείου |
Παράδειγμα 1
>>>fin = open("words.txt","w")
>>>fin.write('This is line 1.\n')
>>>fin.write('This is line 2.\n')
>>>fin.write('This is line3.\n')
>>>fin.close()
Δημιουργήθηκε το αρχείο words.txt και περιέχει τρεις γραμμές:
This is line 1
This is line 2
This is line 3
Παράδειγμα 2
>>> fin=open("words.txt")
>>> print fin.read()
This is line 1
This is line 2
This is line 3
Παράδειγμα 3
>>> fin=open("words.txt")
>>> print fin.readline()
This is line 1
>>> print fin.read()
This is line 2
This is line 3
>>> fin.close()
Παράδειγμα 4
>>> fin=open('words.txt','a')
>>> x=52
>>> keimeno=str(x)
>>> fin.write(keimeno)
>>> fin.close()
>>> fin=open('words.txt')
>>> print fin.read()
>>> fin.closed
This is line 1
This is line 2
This is line 3
52
False
Παράδειγμα 5
>>> fin=open('words.txt')
>>> print fin.read(2)
This is line 2
>>> f.close()
Παράδειγμα 6
>>> fin = open(“workfile”, “r+”)
>>> fin.write(“0123456789abcdef”)
>>> fin.seek(5) # πηγαίνει στο 6ο byte στο αρχείο
>>> fin.read(1)
5
>>> fin.seek(-3, 2) # πηγαίνει στο 3ο byte πριν το τέλος
>>> fin.read(1)
d
Ασκηση 1
Να γραφει προγραμμα σε Python, το οποίο διαβάζει το αρχείο “words.txt” και το ξαναγράφει στο νέο αρχείο “output_words.txt”, όπου πριν από κάθε γραμμή θα προσθέτει τον αύξοντα αριθμό της. Τα αρχεία θεωρούμε ότι βρίσκονται στον τρέχοντα κατάλογο
inputfile = open("words.txt", "r")
outputFile = open("output_words.txt","w")
linecounter = 1
for line in inputfile:
outputFile.write(str(linecounter)+". "+line)
linecounter = linecounter + 1
outputFile=open ("output_words.txt","r")
print outputFile.read()
inputfile.close()
outputFile.close()
Ασκηση 2 Μελετήστε και εξηγήστε τον τον παρακάτω κώδικα
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.read()
f.close()
Ασκηση 3
Υποθέτουμε ότι έχουμε ένα πρόγραμμα σε Python που έχει αποθηκευθεί στο αρχείο με όνομα demo.py και με τον ακόλουθο κώδικα: Τι θα εμφανισει στην οθόνη;
def linecount(filename):
count = 0
for line in open(filename):
count += 1
return count
print linecount('demo.py')
Δραστηριότητα 2( τετράδιο εργασιών)
Να γράψετε ένα πρόγραμμα σε Python το οποίο θα διαβάζει ένα κείμενο από ένα
αρχείο και θα εμφανίζει τις λέξεις κάθε πρότασης σε αντίστροφη σειρά, δηλαδή
την πρώτη λέξη τελευταία και την τελευταία πρώτη.
Δεχόμαστε ότι κάθε πρόταση τελειώνει με τελεία ‘.’ και οι λέξεις είναι χωρισμένες
με ένα κενό. Δεν υπάρχουν άλλα σημεία στίξεως
Απάντηση
f = open('demo.txt', 'r')
for line in f:
word_list = [ ]
word = “”
for symbol in line:
if symbol == “ “ :
word_list.insert(0,word)
word = “”
elif symbol == “.” :
word_list.insert(0,word)
word=''
else :
word += symbol
for word in word_list:
print word,
print
input.close()
Δραστηριότητα 3 (τετραδιο εργασιών)
Να γράψετε ένα πρόγραμμα το οποίο θα ενώνει δύο αρχεία κειμένου σε ένα, τοποθετώντας τα περιεχόμενα του δεύτερου αρχείου μετά από αυτά του πρώτου.
Απάντηση
outfile = open('demo.txt', 'a')
infile = open('words.txt', 'r')
for line in infile:
outfile.write(line)
outfile=open('demo.txt','r')
print outfile.read()
infile.close()
outfile.close()
Ασκηση 4
Να γίνει πρόγραμμα που ανοίγει ένα αρχείο κειμένου που περιέχει ακέραιους θετικούς αριθμούς.
Διαβάζει μία μία τις γραμμές του αρχείου με τη χρήση της δομής while και τη μέθοδο readline() και προσθέτει τις γραμμές στο άθροισμα αφού τις μετατρέψει σε ακέραια μορφή.
Το αρχείο τελειώνει όταν η readline() επιστρέψει κενή συμβολοσειρά ""
Απαντηση
file1=open("demonumbers.txt","r")
s=0.0
x=file1.readline()
while x!="":
print x
s=s+int(x)
x=file1.readline()
file1.close()
print "το αθροισμα ειναι :",s