File Handling & I/O ΓΛΩΣΣΙΚΉ ΤΕΧΝΟΛΟΓΊΑ

Σχετικά έγγραφα
Διαχείριση Περιεχομένου Παγκόσμιου Ιστού και Γλωσσικά Εργαλεία ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ FILE & PROCESS HANDLING

Λειτουργικά Συστήματα (Λ/Σ)

Λειτουργικά Συστήματα (ΙΙ) (διαχείριση αρχείων)

Οντοκεντρικός Προγραμματισμός ΦΡΟΝΤΙΣΤΗΡΙΟ JAVA

Πληροφορική ΙΙ Θεματική Ενότητα 13

Λειτουργικό Σύστημα: διαχείριση πόρων. Τι είναι ένα αρχείο ; Διαχείριση αρχείων. Λειτουργικά Συστήματα (ΙΙ) (διαχείριση αρχείων)

Διάλεξη 2. Μεταβλητές - Δομές Δεδομένων - Eίσοδος δεδομένων - Έξοδος: Μορφοποίηση - Συναρτήσεις. Διοργάνωση : ΚΕΛ ΣΑΤΜ

(Κεφάλαιο 2.7 και 12) Αρχεία στην C. (Διάλεξη 15)

Λειτουργικό Σύστημα: διαχείριση πόρων. Διαχείριση αρχείων. Τι είναι ένα αρχείο ; Λειτουργικά Συστήματα (ΙΙ) (διαχείριση αρχείων)

ΠΛΗΡΟΦΟΡΙΚΗ Ι (Python) Ενότητα 6. Αρχεία (Files)

Εισαγωγή στον Προγραμματισμό Εργαστήριο 3: Βοηθητικά προγράμματα του Linux CLI. Οκτώβριος 2014 Χ. Αλεξανδράκη Γ. Δημητρακάκης

Εισαγωγή στον Προγραμματισμό Εργαστήριο 3: Βοηθητικά προγράμματα του Linux CLI. Οκτώβριος 2014 Χ. Αλεξανδράκη Γ. Δημητρακάκης

5 η Διάλεξη Python - Αρχεία

3ο Εργαστήριο Βασικές εντολές διαχείρισης αρχείων σε LINUX

Μεθόδων Επίλυσης Προβλημάτων

Λειτουργικά Συστήματα (Λ/Σ)

Αρχιτεκτονική Υπολογιστών

Θέτοντας και επιστρέφοντας την τιµή της προτεραιότητας διεργασίας

Κεφάλαιο 12: Είσοδος και έξοδος δεδομένων σε αρχεία

Αντικειμενοστρεφής Προγραμματισμός

ΠΛΗΡΟΦΟΡΙΚΗ ΙI Ενότητα 12: Ροές και είσοδος/έξοδος αρχείων

ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ ΙΙ - UNIX. Συστήματα Αρχείων. Διδάσκoντες: Καθ. Κ. Λαμπρινουδάκης Δρ. Α. Γαλάνη

Προγραμματισμός Ι. Είσοδος/Έξοδος. Δημήτρης Μιχαήλ. Ακ. Έτος Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο

Εισαγωγή στην Επιστήμη της Πληροφορικής Εργαστήριο. UNIX Μέρος 1

Λειτουργικά Συστήματα Κεφάλαιο 2 Οργάνωση Συστήματος Αρχείων 2.1 Διαχείριση Αρχείων και Σύστημα Αρχείων(File System)

Γλωσσική Τεχνολογία. Εισαγωγικό Φροντιστήριο

ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΠΛΗΡΟΦΟΡΙΚΗ (TP-105)

Λειτουργικά Συστήματα Ι. Καθηγήτρια Παπαδάκη Αναστασία

Μετατροπή χαρακτήρων ASCII σε ακέραιο αριθµό (atoi) & Άνοιγµα αρχείου µέσα από τo QtSPIM, διάβασµα, και αποθήκευση του περιεχοµένου του στη µνήµη

Πως θα αποθηκεύσει τη λίστα με τα ψώνια του και θα την ανακτήσει στο Σ/Μ; και πως θα προσθέσει στη λίστα του επιπλέον προϊόντα;

PERL. Δήμος Παύλου Δημήτρης Κουζαπάς

Εισαγωγή στα Λειτουργικά Συστήματα (Λ/Σ) Το UNIX και οι εντολές του Παρουσίαση 3

Εργαστήριο 9: Αρχεία

Μετατροπή χαρακτήρων ASCII σε αριθμό (atoi) & διάβασμα, και αποθήκευση του περιεχομένου του στη μνήμη. (Διάλεξη. Πανεπιστήμιο Κύπρου

HY150a Φροντιστήριο 3 24/11/2017

(Κεφάλαιο 2.7 και 12) Αρχεία στην C. ( ιάλεξη 13) ιδάσκων: ηµήτρης Ζεϊναλιπούρ

ΕΙΣΟ ΟΣ-ΕΞΟ ΟΣ Ε ΟΜΕΝΩΝ

Χειρισµός Σφαλµάτων. Γρηγόρης Τσουµάκας. Τµήµα Πληροφορικής, Αριστοτέλειο Πανεπιστήµιο Θεσσαλονίκης. Έκδοση:

Εργαστήριο Δομημένος Προγραμματισμός (C#) Τμήμα Μηχανολογίας Νικόλαος Ζ. Ζάχαρης Καθηγητής Εφαρμογών

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Αρχεία

Κεφάλαιο 4. Λογισμικό Συστήματος

Αρχεία και Ρεύματα. Αρχεία

Διαχείριση Περιεχομένου Παγκόσμιου Ιστού και Γλωσσικά Εργαλεία ΕΙΣΑΓΩΓΙΚΟ ΦΡΟΝΤΙΣΤΗΡΙΟ

FTP - (File Transfer Protocol ) Πρωτόκολλο Μεταφοράς Αρχείων

File Management και I/O στο UNIX

Εισαγωγή στην Επιστήμη Υπολογιστών. Εισαγωγή στο Λ.Σ. UNIX

Αντικειμενοστρεφής Προγραμματισμός Διάλεξη 9 : ΕΞΑΙΡΕΣΕΙΣ ΚΑΙ Ο ΧΕΙΡΙΣΜΟΣ ΤΟΥΣ

Πρόγραµµα 9.1 Πέρασµα δεδοµένων στην µνήµη

ΠΙΝΑΚΑΣ ΠΕΡΙΕΧΟΜΕΝΩΝ

Προηγμένοι Μικροεπεξεργαστές. Εργαστήριο 4 - Editor

Streams Input / Output in C++ George Kastrinis

Αρχεία κειμένου και η VB.NET

Υποστήριξη Λ.Σ. ΜΥΥ-106 Εισαγωγή στους Η/Υ και στην Πληροφορική

Σημειωματάριο Τετάρτης 25 Οκτ. 2017

Διάλεξη 18η: Διαχείρηση Αρχείων

S, (5, -3, 34, -23, 7) ( *, _

Μάθημα 2 ο ΟΡΓΑΝΩΣΗ ΣΥΣΤΗΜΑΤΟΣ ΑΡΧΕΙΩΝ

ΗΜΥ 213 Εργαστήριο Οργάνωσης Ηλεκτρονικών Υπολογιστών και Μικροεπεξεργαστών

Unix: Εντολές, οργάνωση και χειρισµός αρχείων, διεργασίες

ΤΕΙΘ ΣΤΕΦ - ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΜΑΘΗΜΑ: ΕΙΣΑΓΩΓΗ ΣΤΑ ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ (UNIX) ΕΡΓΑΣΤΗΡΙΟ. 6o ΕΡΓΑΣΤΗΡΙΟ

ΗΜΥ 213 Εργαστήριο Οργάνωσης Ηλεκτρονικών Υπολογιστών και Μικροεπεξεργαστών

ΗΜΥ 213 Εργαστήριο Οργάνωσης Ηλεκτρονικών Υπολογιστών και Μικροεπεξεργαστών

Προγραμματισμός Υπολογιστών & Υπολογιστική Φυσική

Λειτουργικά Συστήματα. Τ.Ε.Ι. Ιονίων Νήσων Σχολή Διοίκησης και Οικονομίας - Λευκάδα

Πληροφορική & Τηλεπικοινωνίες K18 - Υλοποίηση Συστηµάτων Βάσεων εδοµένων Εαρινό Εξάµηνο

Τμήμα Μηχανολόγων Μηχανικών Πανεπιστήμιο Θεσσαλίας ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ. Αρχεία Δεδομένων. Ιωάννης Λυχναρόπουλος Μαθηματικός, MSc, PhD

ΓΛΩΣΣΙΚΗ ΤΕΧΝΟΛΟΓΙΑ. Python & NLTK: Εισαγωγή

ΤρόποςΑξιολόγησης: α) Εργαστήρια (Προαιρετικάµε 20% - 35% βαρύτητα µόνοθετικά) β) Τελική Γραπτή Εξέταση

Δομημένος Προγραμματισμός

SMPcache. Ένα εργαλείο για προσομοίωση-οπτικοποίηση κρυφής μνήμης (Cache)

Εισαγωγή στον Προγραμματισμό Μάθημα 1: Βασική Πλοήγηση σε Linux CLI. Οκτώβριος 2016 Χ. Αλεξανδράκη

Αρχεία & Ρεύματα ΑΡΧΕΙΑ & ΡΕΥΜΑΤΑ. Γεώργιος Παπαϊωάννου ( ) gepap@aueb.gr

Λειτουργικά Συστήματα. Τ.Ε.Ι. Ιονίων Νήσων Σχολή Διοίκησης και Οικονομίας - Λευκάδα

Διαδικασιακός Προγραμματισμός

Εισαγωγή στην Πληροφορική

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Πίνακες Κλάσεις και Αντικείμενα

Προγραμματισμός Η/Υ. Χειρισμός Αρχείων. ΤΕΙ Ιονίων Νήσων Τμήμα Τεχνολόγων Περιβάλλοντος Κατεύθυνση Τεχνολογιών Φυσικού Περιβάλλοντος

Λύβας Χρήστος Αρχική επιµέλεια Πιτροπάκης Νικόλαος και Υφαντόπουλος Νικόλαος

Γλωσσική Τεχνολογία. String Handling Regular Expressions

Τεχνολογία Υπολογιστικών Συστηµάτων & Λειτουργικά Συστήµατα Κεφάλαιο 10

Σημειωματάριο Δευτέρας 20 Νοε. 2017

ιαφάνειες παρουσίασης #6 (β)

Κατανεμημένα Συστήματα

String Handling ΓΛΩΣΣΙΚΉ ΤΕΧΝΟΛΟΓΊΑ

Δομημένος Προγραμματισμός. Τμήμα Επιχειρηματικού Σχεδιασμού και Πληροφοριακών Συστημάτων

XML related standards

Αντικείμενα στη Java. Παύλος Εφραιμίδης. Java Αντικείμενα στη Java 1

Πληροφορική 2. Δομές δεδομένων και αρχείων

10.1 Γενικά για τα streams


$./jms console -w <jms in> -r <jms out> -o <operations file> namedpipe. (standard input).

10 η Διάλεξη Python Βάσεις δεδομένων στη python

Εισαγωγικό Φροντιστήριο

lab13grades Άσκηση 2 -Σωστά απελευθερώνετε ολόκληρη τη λίστα και την κεφαλή

Λειτουργικά Συστήματα (ΗΥ-345) Χειμερινό Εξάμηνο

ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ II. Υφαντόπουλος Νικόλαος Υποψήφιος Διδάκτορας Contact:

Βιβλιοθήκη stdio. Προγραμματισμός II 1

ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ ΙΙ - UNIX. Συστήματα Αρχείων. Διδάσκoντες: Καθ. Κ. Λαμπρινουδάκης Δρ. Α. Γαλάνη

Εργασία Μαθήματος Αξία: 40% του τελικού σας βαθμού Ανάθεση: Παράδοση:

Transcript:

File Handling & I/O ΓΛΩΣΣΙΚΉ ΤΕΧΝΟΛΟΓΊΑ

.NET Framework System.Out namespace Βασική υποστήριξη για διαχείριση αρχείων και φακέλων Ανάγνωση και εγγραφή σε file και data streams Κλήση εκτελέσιμου από κώδικα

System.IO.File Παρέχει μεθόδους για την δημιουργία, αντιγραφή, μεταφορά και άνοιγμα αρχείων. Σημαντικά μέλη: Exists(string path): με δεδομένο το path, επιστρέφει αν υπάρχει το αρχείο ή όχι. Open(string path): ανοίγει ένα αρχείο. Create(string path): δημιουργεί αρχείο. CreateText(string path): δημιουργεί αρχείο κειμένου. Delete(string path): διαγράφει αρχείο. Move(string source, string dest): μεταφέρει αρχείο. Copy(string source, string dest): αντιγράφει αρχείο.

System.IO.Directory Παρέχει μεθόδους για τη δημιουργία, διαγραφή, μεταφορά ή απαρίθμηση των περιεχομένων μιας directory. Σημαντικά μέλη: Exists(string path): έλεγχος ύπαρξης του directory GetFiles(string path): επιστρέφει όλα τα files του directory. GetFiles(string path, string pattern) : επιστρέφει τα files που ταιριάζουν στο συγκεκριμένο pattern. GetDirectories(string path): επιστρέφει όλα τα subdirectories. CreateDirectory(string path): δημιουργία directory Delete, Move κλπ

File & Directory listing

File & Directory listing

Common exceptions FileNotFoundException: Προσπάθεια για προσπέλαση αρχείου που δεν υπάρχει. DirectoryNotFoundException: Προσπάθεια για προσπέλαση directory που δεν υπάρχει PathTooLongException: Χρήση path που είναι πολύ μεγάλο για να υποστηριχτεί από το σύστημα. IOException : Γενικό I/O error

System.IO.StreamReader Κλάση για την ανάγνωση stream από αρχείο. Δημιουργία: StreamReader sr = new StreamReader(path); Σημαντικά μέλη: Close(): Πάντα τα κλείνουμε!!! ReadLine(): Διαβάζει και επιστρέφει μία γραμμη. EndOfStream: Flag για το αν έχουμε φτάσει στο τέλος του αρχείου. ReadToEnd() : Διαβάζει μέχρι το τέλος του αρχείου. Peek(): Επιστρέφει τον επόμενο χαρακτήρα χωρίς να τον καταναλώσει.

System.IO.StreamWriter Κλάση για την εγγραφή σε αρχείο. Δημιουργία: StreamWriter sw = new StreamWriter(path); Σημαντικά μέλη: Close(): Είπαμε, πάντα τα κλείνουμε!!! Αν δεν κληθεί, δεν γράφεται τίποτα. WriteLine(string line): Γράφει το περιεχόμενο και new line. Write(string content): Γράφει το περιεχόμενο.

File I/O example

Process call Όταν έχουμε ένα εκτελέσιμο το οποίο θέλουμε να καλέσουμε από κώδικα και να πάρουμε την έξοδό του, χρησιμοποιούμε την κλάση Process. Σημαντικά μέλη: StartInfo: Ιδιότητα για τα preferences της εκτέλεσης. Start(): Μέθοδος για να ξεκινήσει το process να εκτελείται. WaitForExit(): Μέθοδος έτσι ώστε η τρέχουσα διεργασία να περιμένει την κληθείσα να τερματίσει πριν συνεχίσει.

Process call - example

PYTHON

Το module os I import os Module για την διαχείρηση αρχείων και φακέλων. Είναι cross-platform!! os.path.join(path1[, path2[,...]]) Συνένωση μονοπατιών. π.χ: os.path.join("c:\\music\\ap", "mahadeva.mp3") Παρατηρείστε την έλλειψη \. Το αποτέλεσμα είναι σωστό!! Προστίθεται από μόνο του!! os.join.expanduser(~) Μεταφορά στον home folder ανάλογα με το ΛΣ. HOME (linux) My Documents (Windows)

Το module os II os.path.split(path) Επιστρέφει ένα tuple της μορφής (head, tail) όπου head το path μέχρι το τελευταίο / και tail ότι το ακολουθεί. π.χ.: (filepath, filename) = os.path.split("c:\\music\\ap\\mahadeva.mp3") filepath = 'c:\\music\\ap' filename = 'mahadeva.mp3'

Το module os III os.path.splitext(path) Επιστρέφει ένα tuple της μορφής (root, ext) όπου root το filename και ext η κατάληξη. π.χ.: (shortname, extension) = os.path.splitext(filename) shortname = 'mahadeva' extension = '.mp3'

Το module os IV os.path.isfile(path) Επιστρέφει boolean τιμή ανάλογα με το όρισμα. os.path.isdir(path) Επιστρέφει boolean τιμή ανάλογα με το όρισμα. os.listdir(path) Επιστρέφει μία λίστα με τα περιεχόμενα του φακέλου που δίνεται ως όρισμα.

Το module os V os.system(command) Εκτέλεση εξωτερικής διεργασίας. Η παράμετρος command πρόκειται για ένα string που καλεί στην ουσία ένα εξωτερικό πρόγραμμα. π.χ.: os.system( ls ) Ως επιστρεφόμενη τιμή, λαμβάνεται το exit status της διεργασίας. Η υλοποίηση της παραπάνω συνάρτησης γίνεται μέσω της αντίστοιχης συνάρτησης system() της C και ακολουθείται γενικά το πρότυπο POSIX.

Το module glob I import glob Ανάκτηση full paths με χρήση wildcart. Παραδείγματα: glob.glob('c:\\music\\_singles\\*.mp3') ['c:\\music\\_singles\\a_time_long_forgotten_con.mp3', 'c:\\music\\_singles\\hellraiser.mp3', 'c:\\music\\_singles\\kairo.mp3', 'c:\\music\\_singles\\long_way_home1.mp3', 'c:\\music\\_singles\\sidewinder.mp3', 'c:\\music\\_singles\\spinning.mp3']

Το module glob II glob.glob('c:\\music\\_singles\\s*.mp3') ['sidewinder.mp3', 'spinning.mp3'] glob.glob('c:\\music\\*\\*.mp3') Θα επιστρέψει μία λίστα με όλα τα mp3s που περιέχονται σε όλους τους υποφακέλους του φακέλου music!!

Άνοιγμα αρχείων open(filename, mode) Το πρώτο όρισμα είναι τύπου string και περιέχει το όνομα του αρχείου (ή και το path κάτω από το οποίο αυτό υπάρχει). Το δεύτερο όρισμα είναι επίσης τύπου string και υποδηλώνει τον τρόπο με τον οποίο θα χρησιμοποιηθεί το αρχείο. 'r' (read - default) 'w' (write) 'a' (append) 'r+' (both read/write)

Ανάγνωση περιεχομένου Ι f.read(size) Η παράμετρος size είναι προεραιτική και υποδηλώνει πόσα bytes θα διαβαστούν από το αρχείο f (file object). Είναι ευθύνη του προγραμματιστή να καθορίσει την τιμή της size. Αν δεν δοθεί τιμή, η read διαβάζει ολόκληρο το περιεχόμενο!! Μεγάλη προσοχή στην χρήση της!! Η μνήμη δεν είναι άπειρη...

Ανάγνωση περιεχομένου ΙΙ f.readline() Ανάγνωση μίας γραμμής από το αρχείο. Ως delimeter χρησιμοποιείται ο χαρακτήρας νέας γραμμής ('\n'). Το επιστρεφόμενο string περιέχει τον χαρακτήρα νέας γραμμής εκτός και αν πρόκειται για το τέλος του αρχείου, το οποίο δεν τελειώνει με νέα γραμμή!! Προσοχή στην επιστρεφόμενη τιμή!! Ένα κενό string είναι το τέλος του αρχείου ενώ ένα string της μορφής '\n' είναι μία κενή γραμμή!!

Ανάγνωση περιεχομένου ΙΙΙ f.readlines(sizehint) Επιστρέφει μία λίστα, όπου κάθε στοιχείο της είναι μία γραμμή του αρχείου. Η παράμετρος sizehint είναι προεραιτική και συνίσταται για πραγματικά μεγάλα αρχεία, με σκοπό την καλύτερη διαχείρηση μνήμης. Αναφέρεται σε bytes, αλλά η συνάρτηση θα επιστρέψει μόνο ολόκληρες γραμμές. Η καλύτερη προσέγγιση!!

Ανάγνωση περιεχομένου ΙV for line in f: print line Απλοϊκή προσέγγιση Προσπέλαση ανά γραμμή χωρίς την χρήση συνάρτησης. Διαφορετικό buffering στην μνήμη!! Δεν πρέπει να χρησιμοποιείται σε συνδυασμό με τις προηγούμενες μεθόδους.

Εγγραφή f.write(string) Τόσο απλά!! Για εγγραφή άλλου τύπου δεδομένων, π.χ. int, πρέπει να γίνει πρώτα μετατροπή σε string, π.χ.: a = 5 s = str(a) f.write(s) Hint: Προσοχή κατά την αντίστοιχη ανάκτηση και χρήση αριθμών από αρχεία. Πρέπει να γίνει μετατροπή σε int πριν την χρήση τους σε μαθηματικές πράξεις..

Προσπέλαση περιεχομένου f.tell() Επιστρέφει έναν int που δείχνει σε ποιο byte (ξεκινώντας απ'την αρχή του αρχείου) βρίσκεται η προσπέλαση. f.seek(offset, from_what) Ρητή αλλαγή στην θέση του δείκτη. Η παράμετρος offset υποδηλώνει τα bytes που προστίθενται στην from_what για την μετακίνησή του κάθε φορά. Η παράμετρος from_what υποδηλώνει την θέση του δείκτη. 0 (απ'την αρχή του αρχείου - default) 1 (απ'την τρέχουσα θέση του μέσα στο αρχείο) 2 (από το τέλος του αρχείου)

Κλείσιμο αρχείων f.close() Τόσο απλά!! Όταν τελειώσουμε με το αρχείο εκτελούμε την παραπάνω εντολή για την αποδέσμευση μνήμης και την αποφυγή περίεργων καταστάσεων...

Exceptions Ι Κατά το άνοιγμα/κλείσιμο ή κατά την ανάγνωση/ εγγραφή ενός αρχείου οτιδήποτε μπορεί να πάει στραβά.. ( Νόμος του Murphy για το I/O. ) Χρησιμοποιούμε χειρισμό εξαιρέσεων για την αποφυγή βίαιου τερματισμού της εκτέλεσης του προγράμματός μας. Ο τύπος exception που γίνεται throw σε αυτές τις περιπτώσεις είναι ο IOError.

Exceptions ΙΙ Γενική μορφή try block: try:... except IOError: pass finally:...

Exceptions ΙΙI Παράδειγμα: try: f = open(path,mode) f.readlines()... except IOError: pass finally: f.close()