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

Slides:



Advertisements
Παρόμοιες παρουσιάσεις
ΕΙΣΑΓΩΓΗ ΣΤΗΝ PHP. Τι θα μάθουμε;  Να καταλάβουμε τι είναι η PHP και πώς δουλεύουν τα PHP scripts  Τι χρειάζεται για να ξεκινήσουμε με την PHP  Να.
Advertisements

Συλλογές, Στοίβες και Ουρές Σε πολλές εφαρμογές μας αρκεί η αναπαράσταση ενός δυναμικού συνόλου με μια δομή δεδομένων η οποία δεν υποστηρίζει την αναζήτηση.
ΙΩΑΝΝΗΣ ΚΩΝΣΤΑΝΤΙΝΟΥ 2ο ΦΡΟΝΤΙΣΤΗΡΙΟ ΠΑΡΑΣΚΕΥΗ 26 ΟΚΤΩΒΡΙΟΥ 2012 ΑΙΘΟΥΣΑ Β4 11.
ΕΙΣΑΓΩΓΗ ΣΤΟ DOS (Disk Operating System)
ΜΑΘΗΜΑ: ΓΛΩΣΣΑ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ C++ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ Δευτέρα, 30 Ιουνίου 2014Δευτέρα, 30 Ιουνίου 2014Δευτέρα, 30 Ιουνίου 2014Δευτέρα, 30 Ιουνίου 2014Τμ.
ΔΙΑΧΕΙΡΙΣΗ ΠΕΡΙΕΧΟΜΕΝΟΥ ΠΑΓΚΟΣΜΙΟΥ ΙΣΤΟΥ ΚΑΙ ΓΛΩΣΣΙΚΑ ΕΡΓΑΛΕΙΑ Τεχνικές NLP – Σχεδιαστικά Θέματα.
Γυμνάσιο Νέας Κυδωνίας
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
TEMPLATES STANDARD TEMPLATE LIBRARY ΟΝΤΟΚΕΝΤΡΙΚΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ C Evangelos Theodoridis.
ΜΑΘ-3122/106 Προγραμματισμός
Microsoft Excel 4.2 Κελιά Κίκα Χρυσοστόμου.
Φροντηστήριο Διαχείριση Περιεχομένου Παγκόσμιου Ιστού και Γλωσσικά Eργαλεία.
Περίληψη Αρχιτεκτονική Μικροεπεξεργαστών MIPS-32
File Management και I/O στο UNIX
Σχεδίαση-Ανάπτυξη Εφαρμογών Πληροφορικής Αντώνιος Συμβώνης, ΕΜΠ, Slide 1 Week 9: Input / Output Εβδομάδα 8: Είσοδος / Έξοδος [Input / Output]
Νήματα Οι διεργασίες έχουν τα παρακάτω συστατικά:
Γλωσσική Τεχνολογία String Handling – Regular Expressions.
Εργασία Η υλοποίηση του αλγορίθμου συγχώνευσης θα πρέπει να χρησιμοποιεί την ιδέα των ροών (streams). Θα πρέπει να υπάρχουν δύο διαφορετικά είδη.
ΗΥ 150 – ΠρογραμματισμόςΞενοφών Ζαμ π ούλης ΗΥ-150 Προγραμματισμός Αλγόριθμοι και Προγράμματα.
ΘΠ06 - Μεταγλωττιστές Πίνακας Συμβόλων. Πίνακας Συμβόλων (Symbol Table) (Ι)  Είναι μια δομή στην οποία αποθηκεύονται τα ονόματα ενός προγράμματος και.
ΠΕΡΙΓΡΑΦΗ ΓΛΩΣΣΑΣ PYTHON
Η ΓΛΩΣΣΑ C ΜΑΘΗΜΑ 2.
Ολυμπιάδα Πληροφορικής
ΣΥΝΑΡΤΗΣΕΙΣ.
ΤΗΣ ΦΟΙΤΗΤΡΙΑΣ : ΤΣΑΛΤΑ ΑΝΑΣΤΑΣΙΑ Α.Μ. : 30920
ΟΡΓΑΝΩΣΗ ΣΥΣΤΗΜΑΤΟΣ ΑΡΧΕΙΩΝ A’ μέρος
ΘΠ06 - Μεταγλωττιστές Πίνακας Συμβόλων Φροντιστήριο - 30/04/2009.
Lists– Λίστες 1. Αυτό-αναφορικές δομές Τα μέλη μίας δομής μπορεί να είναι οποιουδήποτε τύπου, ακόμα και δείκτες σε δομές του ίδιου τύπου. Χρησιμοποιώντας.
Γλωσσική Τεχνολογία Εισαγωγικό Φροντιστήριο. Project του μαθήματος  Εργασία 2 ατόμων  Προφορική εξέταση για :  Project (80%)  Θεωρία (20%)  Στο φροντιστήριο.
1 Εισαγωγή στα Streams Υπάρχουν πάνω από 60 κλάσεις για input/output στο πακέτο Υπάρχουν πάνω από 60 κλάσεις για input/output στο πακέτο java.io.*; java.io.*;
ΗΥ150 – ΠρογραμματισμόςΚώστας Παναγιωτάκης ΗΥ-150 Προγραμματισμός Αρχεία.
Δομές Δεδομένων. Επιλογή δομής δεδομένων Κριτήρια: – Μέγεθος του προβλήματος – Πως θα χρησιμοποιηθεί Ενέργειες που καθορίζουν το κόστος: – Lookup: αναζήτηση/έλεγχος.
HY340 : ΓΛΩΣΣΕΣ ΚΑΙ ΜΕΤΑΦΡΑΣΤΕΣ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ, ΣΧΟΛΗ ΘΕΤΙΚΩΝ ΕΠΙΣΤΗΜΩΝ, ΤΜΗΜΑ ΕΠΙΣΤΗΜΗΣ ΥΠΟΛΟΓΙΣΤΩΝ ΔΙΔΑΣΚΩΝ Αντώνιος Σαββίδης.
1 ΗΥ-340 Γλώσσες και Μεταφραστές Φροντιστήριο Πίνακας Συμβόλων Symbol Table.
Επικοινωνία Ανθρώπου Μηχανής HTML CGI JAVASCRIPT Κουμπούλης Χρήστος Α.Μ. 921 Χαλαβαζής Βασίλης Α.Μ. 988.
Λεξικό, Union – Find Διδάσκοντες: Σ. Ζάχος, Δ. Φωτάκης Επιμέλεια διαφανειών: Δ. Φωτάκης Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Εθνικό Μετσόβιο.
Έλεγχος Ονομάτων (Name Control) Για ένα πρόγραμμα που αποτελείται από πολλά τμήματα κάποια από τα οποία έχουν πιθανώς γραφτεί από άλλους προγραμματιστές.
Τμήμα Πληροφορικής και Τηλεπικοινωνιών
Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1 Επεξεργασία Ερωτήσεων.
Streams Streams: κανάλια ροής δεδομένων Κανάλια εισόδου: ανάγνωση δεδομένων Κανάλια εξόδου: αποστολή δεδομένων Συνήθεις πηγές και προορισμοί δεδομένων:
ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΕΣ ΤΕΧΝΙΚΕΣ Διδάσκοντες:Γιάννης Μαΐστρος Στάθης Ζάχος Νίκος Παπασπύρου
ΗΥ 150 – Προγραμματισμός Ξενοφών Ζαμπούλης ΗΥ -150 Προγραμματισμός Αρχεία.
ΗΥ150 – ΠρογραμματισμόςΞ. Ζαμπούλης ΗΥ-150 Προγραμματισμός Αρχεία.
Κεφάλαιο 4 Εξαιρέσεις. Όταν σε ένα πρόγραμμα συμβεί κάποιο λάθος, ο κώδικας εγείρει (throw) μία εξαίρεση. Στη Java oι εξαιρέσεις εκπροσωπούνται από αντικείμενα.
ΕΙΣΑΓΩΓΙΚΟ ΦΡΟΝΤΙΣΤΗΡΙΟ Διαχείριση Περιεχομένου Παγκόσμιου Ιστού και Γλωσσικά Εργαλεία.
ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΕΣ ΤΕΧΝΙΚΕΣ Διδάσκοντες:Γιάννης Μαΐστρος Στάθης Ζάχος Νίκος Παπασπύρου
Βασικά στοιχεία της Java
ΗΥ150 – ΠρογραμματισμόςΚώστας Παναγιωτάκης ΗΥ-150 Προγραμματισμός Συναρτήσεις (μέρος δεύτερο) και Μεταβλητές.
Κεφάλαιο 3 Τύποι Δεδομένων - Τελεστές. Πρωτογενείς τύποι δεδομένων: int, float, double, chars ΤύποςΌνομαΜέγεθος byte 8-bit signed, short 16-bit.
Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1 Ευρετήρια.
Εισαγωγή στη JAVΑ (μέρος Β’) Βασίλης Παπαταξιάρχης Μάθημα: Αντικειμενοστραφής Προγραμματισμός Διδάσκουσα: Ιζαμπώ Καράλη Τμήμα Πληροφορικής.
ΗΥ150 – ΠρογραμματισμόςΚώστας Παναγιωτάκης ΗΥ-150 Προγραμματισμός Τύποι Μεταβλητών Τελεστές Βασική Είσοδος/Έξοδος.
Γλώσσες Προγραμματισμού Μεταγλωττιστές Πίνακας Συμβόλων Πανεπιστήμιο Μακεδονίας Τμήμα Εφαρμοσμένης Πληροφορικής Ηλίας Σακελλαρίου.
Λειτουργικά Συστήματα
ΜΕΤΑΒΛΗΤΕΣ-ΣΤΑΘΕΡΕΣ -ΕΚΦΡΑΣΕΙΣ
Οι Δομές Δεδομένων Ουρά και Στοίβα
Ευρετήρια Βάσεις Δεδομένων Ευαγγελία Πιτουρά.
Αρχεσ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Η/Υ ΤΑξη Β΄
Δυναμικός Κατακερματισμός
Java DataBase Connectivity
Αρχεσ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Η/Υ ΤΑξη Β΄
Πίνακας Συμβόλων Διαλέξεις στο μάθημα: Μεταφραστές Γιώργος Μανής.
Εισαγωγή στην Πληροφορική μεγάλου όγκου δεδομένων
Κεφάλαιο 10 Streams.
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
Εισαγωγή στον Προγραμματισμό με Python, ΑΠΘ ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ Εισαγωγή στον Προγραμματισμό με Python Εβδομάδα 1: Βασικά στοιχεία.
Προγραμματισμός ΗΥ Ενότητα 12: Αρχεία Δομών. Διδάσκων: Ηλίας Κ Σάββας,
Εισαγωγή στη Java (Μέρος Α’)
ΣΥΓΧΡΟΝΑ ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ Τρίτη Έκδοση ANDREW S
Δυναμικός Κατακερματισμός
Μεταγράφημα παρουσίασης:

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

Επιλογή δομής δεδομένων Κριτήρια:  Μέγεθος του προβλήματος  Πως θα χρησιμοποιηθεί Ενέργειες που καθορίζουν το κόστος:  Lookup: αναζήτηση/έλεγχος ύπαρξης δεδομένων στη δομή.  Insert: εισαγωγή δεδομένων στη δομή.

Συνήθεις κλάσεις Οι νεότερες γλώσσες προγραμματισμού προσφέρουν συνήθως δύο βασικές κλάσεις:  Dictionary  Δυναμικού μεγέθους.  Κάθε εγγραφή είναι του τύπου.  Το κλειδί εισάγεται σε hashtable.  Οι εγγραφές δεν ταξινομούνται.  List:  Δυναμικού μεγέθους.  Κάθε εγγραφή είναι μόνο value.  Δεν υπάρχει οργάνωση.  Υποστηρίζει κλήσεις ταξινόμησης.

Υπέρ-Κατά Dictionaries:  Πολύ γρήγορα lookups.  Πιο αργή προσθήκη εγγραφών (hashing process).  Για να ταξινομηθεί πρέπει να εξαχθεί η λίστα των κλειδιών. Lists:  Αργά lookups. Συνήθως γίνεται σειριακή αναζήτηση.  Γρήγορη προσθήκη εγγραφών.  Μπορεί να ταξινομηθεί.

Τι χρησιμοποιούμε? Κριτήρια:  Πόσες θα είναι οι εγγραφές? Πχ για < 10 δεν αξίζει το κόστος του hashing.  Πόσο συχνά θα ψάχνουμε στη δομή? Πχ αν σε κάθε insert αντιστοιχεί και ένα lookup ή περισσότερο το hashing συμφέρει.  Θα ταξινομήσουμε? Αν και οι περισσότερες γλώσσες υποστηρίζουν απευθείας μετατροπή των κλειδιών του Dictionary σε λίστα για να γίνει ταξινόμηση. Πως επιλέγουμε?  Μαντεύοντας. Ο γενικός κανόνας είναι “rule of thumb”. Κάθε πρόβλημα είναι διαφορετικό και μέχρι να το δεις να δουλεύει δεν ξέρεις με σιγουριά.

Python - Lists list.sort()  Ταξινόμηση λίστας list.reverse()  Αντιστροφή στοιχείων λίστας

Python - Lists as stacks list.append()  Προσθήκη στο τέλος της λίστας list.pop()  Αφαίρεση από το τέλος της λίστας

Python – List Comprehensions

Python - Dictionaries

Το module os – Διαχείριση Paths  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 – Διαχείριση Paths os.path.split(path) ‏  Επιστρέφει ένα tuple της μορφής (head, tail) όπου head το path μέχρι το τελευταίο “/” και tail ότι το ακολουθεί.  π.χ.: (filepath, filename) = os.path.split("c:\\music\\ap\\mahadeva.mp3") ‏c:\\music\\ap\\mahadeva.mp3  filepath = 'c:\\music\\ap'c:\\music\\ap  filename = 'mahadeva.mp3'mahadeva.mp3

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

Το module os – Αρχεία & Φάκελοι os.path.isfile(path) ‏  Επιστρέφει boolean τιμή ανάλογα με το όρισμα. os.path.isdir(path) ‏  Επιστρέφει boolean τιμή ανάλογα με το όρισμα. os.listdir(path) ‏  Επιστρέφει μία λίστα με τα περιεχόμενα του φακέλου που δίνεται ως όρισμα. Χρήσιμα list comprehensions: [f for f in os.listdir('/bin') if os.path.isfile(os.path.join('/bin',f))] [f for f in os.listdir('/bin') if os.path.isdir(os.path.join('/bin',f))]

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

Το module os – Κλήση Διεργασιών os.popen(command[, mode[, bufsize]])¶¶  Κλήση εξωτερικής διεργασίας μέσω του command  Επιστρέφει file handler: μπορείτε να ανοίξετε ρεύμα ανάγνωσης του stdout ή εγγραφής στο stdin  Πχ f=os.popen(‘ls ~’) output = f.read() f.close() print output  FYI: στις νεότερες εκδόσεις της python, η χρήση της αντικαθίσταται από το subprocess module

Το module glob I import glob  Ανάκτηση full paths με χρήση wildcart. Παραδείγματα:  glob.glob('c:\\music\\_singles\\*.mp3') ‏c:\\music\\_singles\\*.mp3  ['c:\\music\\_singles\\a_time_long_forgotten_con.mp 3',  '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') ‏c:\\music\\_singles\\s*.mp3  ['sidewinder.mp3', 'spinning.mp3'] glob.glob('c:\\music\\*\\*.mp3') ‏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 διαβάζει ολόκληρο το περιεχόμενο!!  Μεγάλη προσοχή στην χρήση της!! Η μνήμη δεν είναι άπειρη...  Στο τέλος του αρχείου επιστρέφει empty string

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

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

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

Εγγραφή  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() ‏