Home » Εβδομαδιαίες Στήλες » Προγραμματισμός » Μαθήματα Προγραμματισμού Python από το PCsteps: #10

Μαθήματα Προγραμματισμού Python από το PCsteps: #10

Αυτός ο οδηγός γράφτηκε πριν από περισσότερα από 2 χρόνια. Η τεχνολογία αλλάζει και εξελίσσεται. Αν οτιδήποτε δεν σας λειτουργεί, γράψτε μας στα σχόλια και θα κοιτάξουμε να τον ανανεώσουμε.

Στο μάθημα αυτής της εβδομάδας θα δούμε βήμα-βήμα ένα πρόγραμμα που αλληλεπιδρά – έστω και στον ελάχιστο βαθμό – με τον υπόλοιπο υπολογιστή. Προτού ξεκινήσουμε να το γράφουμε, θα χρειαστεί κάποια προετοιμασία, που μας δίνει την ευκαιρία να μάθουμε καινούργια module, συναρτήσεις, το (γνωστό) εργαλείο pip, αλλά και πώς περνάμε παραμέτρους όταν καλούμε τα προγράμματά μας.

Δείτε τις ενότητες του οδηγού

Προτάσεις συνεργασίας

Προωθήστε δυναμικά την επιχείρησή σας στο site του PCsteps και στο κανάλι μας στο YouTube.

Επικοινωνία

Γίνε VIP μέλος στο PCSteps

Τα μέλη υποστηρίζουν ενεργά το PCsteps για να συνεχίσει να λειτουργεί χωρίς διαφημίσεις για όλους.

Συμμετοχή

Για να δείτε όλα τα μαθήματα Python από την αρχή τους, αλλά και τα επόμενα, αρκεί να κάνετε κλικ εδώ.

Περιγραφή προγράμματος

Κατά πάσα πιθανότητα έχουμε λογαριασμούς σε πολλές διαφορετικές ιστοσελίδες. Δεν είναι όμως καλή τακτική η χρήση κοινού κωδικού σε όλες, καθώς – σε περίπτωση κενού ασφαλείας – μπορεί να βρεθούμε γενικότερα εκτεθειμένοι.

Είναι προτιμότερο να αποκτήσουμε έναν password manager, μέσω του οποίου μπορούμε να διαχειριζόμαστε όλους τους κωδικούς μας. Έτσι, μπορούμε να κάνουμε αντιγραφή τον κωδικό για οποιοδήποτε λογαριασμό μας (στο πρόχειρο) και επικόλληση στο πεδίο password της ιστοσελίδας.

Το πρόγραμμα διαχείρισης password που θα δημιουργήσουμε εμείς δεν είναι ασφαλές, αλλά μας επιτρέπει να αντιληφθούμε τον τρόπο λειτουργίας τέτοιων προγραμμάτων.

Pyperclip module

Το βασικό στοιχείο που θα χρειαστούμε για να υλοποιήσουμε το πρόγραμμά μας είναι το module pyperclip. Με το pyperclip έχουμε στη διάθεσή μας συναρτήσεις, οι οποίες μπορούν να στείλουν και να δεχθούν κείμενο από το πρόχειρο (clipboard) του υπολογιστή μας.

Με τον τρόπο αυτόν, γίνεται πιο εύκολο να κάνουμε χρήση του κειμένου που επιθυμούμε στα email μας, στο Word, ή όπου αλλού χρειαστεί.

Το κακό με module όπως το pyperclip, είναι ότι δεν ανήκουν στη standard βιβλιοθήκη από module που έρχονται μαζί με την Python. Έχουν γραφεί από άλλους προγραμματιστές με σκοπό να επεκτείνουν περαιτέρω τις δυνατότητές της. Για τον λόγο αυτόν, θα πρέπει να τα εγκαθιστούμε εμείς χειροκίνητα.

Module από τρίτες πηγές

Η πιο ενδεδειγμένη μέθοδος για την εγκατάσταση τρίτων module είναι η χρήση του εργαλείου pip της Python.

Με αυτό κατεβάζουμε στον υπολογιστή μας με ασφάλεια module της Python από την επίσημη σελίδα Python Software Foundation. Η σελίδα αποτελεί ουσιαστικά ένα είδος δωρεάν app store για module της Python.

Εγκατάσταση pip

Το εκτελέσιμο .exe αρχείο του εργαλείου pip (Pip Installs Packages) λέγεται pip στα Windows και pip3 στα Linux. Για όσους χρησιμοποιούν Windows, υπάρχει ήδη με την αρχική εγκατάσταση της Python, ενώ για τα Linux απαιτείται ξεχωριστή εγκατάσταση.

Αν έχουμε Windows, λοιπόν, θα βρούμε το pip στον φάκελο εγκατάστασης της Python στο σύστημά μας, στον φάκελο Scripts:

Από την άλλη, αν έχουμε Linux θα πρέπει να το εγκαταστήσουμε. Για Ubuntu ή Debian, γράφουμε στο Terminal:

sudo apt-get install python3-pip

…ενώ για Fedora:

sudo yum install python3-pip

Tο μόνο που μένει πλέον είναι να κατεβάσουμε το module που μας ενδιαφέρει – στην προκειμένη περίπτωση δηλαδή το pyperclip. Ανοίγουμε λοιπόν την γραμμή εντολών και γράφουμε:

pip install pyperclip

Για να ελέγξουμε αν όλα πήγαν καλά, μπορούμε να δοκιμάσουμε ένα import στον IDLE, για να διαπιστώσουμε ότι δεν μας δίνει κάποιο error.

import pyperclip

Copy() και paste()

Έχοντας πλέον στη διάθεσή μας το pyperclip, μπορούμε να αξιοποιήσουμε τις copy() και paste(), με τις οποίες το κείμενό μας αλληλεπιδρά με το clipboard του PC.

Γράφουμε στον IDLE:

Προκειμένου να γίνει αντιληπτό ότι το κείμενο που γίνεται paste() στον κώδικά μας είναι από το πρόχειρο του υπολογιστή, πάμε να κάνουμε αντιγραφή σε κάποιο κείμενο άσχετο με το πρόγραμμά μας.

Για παράδειγμα, ας αντιγράψουμε με Ctrl + C, ένα τυχαίο κείμενο από την αρχική σελίδα του pypi.python.org:

Κάνοντας paste() στον IDLE, θα εμφανιστεί το ίδιο κείμενο:

Σχεδίαση – Δομές δεδομένων

Όπως είχαμε πει στο πρώτο μάθημα για την Python, έχουμε τη δυνατότητα να εκτελούμε τα προγράμματά μας και από τη γραμμή εντολών. Θέλουμε να μπορούμε να τρέξουμε το πρόγραμμα που θα δημιουργήσουμε δίνοντάς του απευθείας από τη γραμμή εντολών ως όρισμα το όνομα λογαριασμού – πχ του email μας.

Στη συνέχεια, ο κωδικός του συγκεκριμένου λογαριασμού θα αντιγράφεται στο πρόχειρο, ούτως ώστε να τον κάνουμε επικόλληση στο ανάλογο πεδίο password.

Μπορούμε να ξεκινήσουμε ανοίγοντας ένα νέο παράθυρο στον editor μας, και αποθηκεύοντας το κενό – μέχρι στιγμής – πρόγραμμά μας ως pw.py. Στην πρώτη σειρά θα βάλουμε απαραιτήτως μια γραμμή shebang, ως εξής (για Windows):

#! python3

Το shebang ή hashbang αποτελεί ένα σημάδι για τα λειτουργικά συστήματα, που δηλώνει ότι το συγκεκριμένο αρχείο κειμένου είναι εκτελέσιμο. Με άλλα λόγια, δηλώνουμε στην Python ότι θέλουμε να εκτελέσει το αρχείο στο οποίο γράφουμε το πρόγραμμά μας.

Για να επιλέξουμε την κατάλληλη δομή δεδομένων, θυμόμαστε ότι θέλουμε να συσχετίσουμε το όνομα κάθε λογαριασμού με τον κωδικό του. Μπορούμε, επομένως, με ένα λεξικό να κρατάμε στα κλειδιά τα ονόματα των διάφορων λογαριασμών μας, και στις αντίστοιχες τιμές τους κωδικούς του καθενός.

Τοποθετούμε επίσης, όπως είθισται, κι ένα σχόλιο σχετικά με τον σκοπό που εξυπηρετεί το πρόγραμμα. Έχουμε λοιπόν, μέχρι στιγμής, τον παρακάτω κώδικα:

Ορίσματα από τη γραμμή εντολών

Στον οδηγό για την προετοιμασία της Python είχαμε κάνει μια επισκόπηση σχετικά με την εκτέλεση προγραμμάτων από τη γραμμή εντολών των Windows.

Μαθήματα Προγραμματισμού Python Από Το PCsteps: #1

Την προηγούμενη εβδομάδα είχαμε δει μια μικρή εισαγωγή στον προγραμματισμό. Για όσους την έχασαν, μπορείτε να ρίξετε μια ματιά πριν συνεχίσετε με τη σημερινή δημοσίευση….

Στην ενότητα αυτή, θα δούμε ότι έχουμε τη δυνατότητα να καλούμε το πρόγραμμά μας, δίνοντάς του και κάποιες παραμέτρους ως ορίσματα.

Για να συμβεί αυτό, θα χρειαστεί να εισάγουμε στο πρόγραμμα με import τη sys. Έτσι, μπορούμε να χρησιμοποιήσουμε τη μεταβλητή sys.argv, στην οποία αποθηκεύονται τα ορίσματα που θα δώσει ο χρήστης.

Η sys.argv είναι μια λίστα, της οποίας το πρώτο αντικείμενο θα πρέπει πάντοτε να είναι ένα string που περιέχει το όνομα του προγράμματος – στην περίπτωσή μας ‘pw.py'. Το δεύτερο αντικείμενο είναι το πρώτο μας όρισμα γραμμής εντολών.

Για το συγκεκριμένο πρόγραμμα, το όρισμα αυτό θα είναι το όνομα του λογαριασμού για τον οποίον θέλουμε τον κωδικό. Εφόσον είναι υποχρεωτικό για τον χρήστη να περάσει ένα όρισμα, θα τυπώσουμε το ανάλογο μήνυμα, σε περίπτωση που το ξεχάσει.

Με άλλα λόγια, το μήνυμα θα τυπώνεται όταν η sys.argv περιέχει λιγότερες από δύο τιμές.

Μπορούμε, λοιπόν, να γράψουμε μέχρι στιγμής:

Αντιγραφή του σωστού κωδικού

Τώρα που το όνομα του λογαριασμού είναι αποθηκευμένο ως string στη μεταβλητή account, πρέπει να ελέγξουμε αν ανήκει στα κλειδιά του λεξικού PASSWORDS.

Αν υπάρχει, θέλουμε να αντιγράψουμε τη συσχετισμένη τιμή του στο πρόχειρο του υπολογιστή, με τη βοήθεια της pyperclip.copy(). Επομένως, πρέπει να εισάγουμε και το module pyperclip στο πρόγραμμα.

Να σημειωθεί ότι η χρήση της account για να κρατήσουμε τον λογαριασμό που εισήγαγε ο χρήστης είναι προαιρετική. Θα μπορούσαμε απλά να χρησιμοποιούμε την sys.argv[1] απευθείας όπου έχουμε την account στο πρόγραμμά μας. Ωστόσο, το sys.argv[1] σαν όνομα μεταβλητής είναι αρκετά πιο δυσανάγνωστο.

Πάμε λοιπόν να προσθέσουμε το τελευταίο κομμάτι για το οποίο συζητήσαμε:

Ο νέος κώδικας εξετάζει στο λεξικό PASSWORDS για το όνομα του λογαριασμού. Αν υπάρχει ως κλειδί του λεξικού, παίρνουμε την αντίστοιχη τιμή, την αντιγράφουμε στο πρόχειρο, και τυπώνουμε ένα μήνυμα που ενημερώνει ότι αντιγράψαμε την τιμή.

Διαφορετικά, τυπώνουμε απλά ένα μήνυμα που λέει ότι δεν υπάρχει λογαριασμός με αυτό το όνομα.

Με την προσθήκη αυτή, ο κώδικάς μας είναι έτοιμος. Το μόνο που μένει να κάνουμε είναι να τρέξουμε το πρόγραμμα από την κονσόλα των Windows.

Εκτέλεση προγράμματος

Ας θυμηθούμε τη διαδικασία που είχαμε δει στο πρώτο μας μάθημα, σχετικά με το πώς τρέχουμε ένα πρόγραμμα Python από την κονσόλα.

Για να ανοίξουμε την γραμμή εντολών, κάνουμε κλικ στην Έναρξη και πληκτρολογούμε cmd.

Μόλις ανοίξει το παράθυρο της κονσόλας, κατά πάσα πιθανότητα βρισκόμαστε στον φάκελο του τρέχοντος χρήστη των Windows. Θα πρέπει να πλοηγηθούμε στον φάκελο όπου βρίσκεται αποθηκευμένο το πρόγραμμα pw.py.

Το κάνουμε με την εντολή “cd”, ακολουθούμενη από ολόκληρο το μονοπάτι του φακέλου που περιέχει το πρόγραμμά μας.

Από εδώ, τρέχουμε το script μας γράφοντας “python” και το όνομα του προγράμματος. Σε περίπτωση που γίνει η κλήση χωρίς κάποιο όρισμα, θα λάβουμε το μήνυμα που είδαμε προηγουμένως κατά τη συγγραφή του κώδικα:

Εκτελούμε ξανά, λοιπόν, και αυτή τη φορά βάζουμε και το κατάλληλο όρισμα: το όνομα του λογαριασμού που μας ενδιαφέρει, αφού αφήσουμε ένα κενό. Στην περίπτωσή μας, ζητάμε τον κωδικό του email:

Βλέπουμε ότι το μήνυμα που τυπώθηκε είναι το σωστό· το πρόχειρο του υπολογιστή μας περιέχει τον κωδικό του λογαριασμού που ζητήσαμε. Μπορούμε να κάνουμε μια επικόλληση για να επιβεβαιώσουμε:

Στην πράξη, το πρόγραμμά μας δεν είναι και ό,τι καλύτερο για να τηρούμε τους κωδικούς μας σε ένα μέρος, καθώς δεν παρέχει καμία ασφάλεια. Μπορεί όμως να έχει κάποια χρησιμότητα με μερικές τροποποιήσεις.

Για παράδειγμα, αν θέλουμε να στείλουμε διαφορετικά μηνύματα ή email που έχουν κάποιες στάνταρ κοινές παραγράφους. Θα μπορούσαμε να βάλουμε τις παραγράφους αυτές ως τιμές στο λεξικό (ίσως να του αλλάξουμε και όνομα).

Θα είχαμε, έτσι, εύκολα στη διάθεσή μας τα κομμάτια αυτά, για να τα επιλέγουμε, να τα αντιγράφουμε στο πρόχειρο, και να κάνουμε επικόλληση όπου χρειάζεται.

Στο επόμενο μάθημα για τον προγραμματισμό Python

Θα ασχοληθούμε και πάλι με κείμενο και string, μαθαίνοντας πόσο χρήσιμες είναι οι κανονικές εκφράσεις στην ανίχνευση μοτίβων κειμένου σε ένα string.

Σας άρεσε το σημερινό μάθημα για τον προγραμματισμό Python?

Πώς σας φάνηκε το πρώτο μας (μικρό) project? Από εδώ και στο εξής, τα περισσότερα ενδεικτικά προγράμματα που γράφουμε για τις νέες έννοιες που συναντούμε, θα εκτελούνται από τη γραμμή εντολών.

Για να δείτε όλα τα μαθήματα Python από την αρχή τους, αλλά και τα επόμενα, αρκεί να κάνετε κλικ εδώ.
Τα σχόλια του PCsteps έχουν μεταφερθεί στο Questions.pcsteps.gr. Αν έχετε απορίες για τη δημοσίευση ή οποιαδήποτε τεχνολογική ερώτηση, από προτάσεις αγορών μέχρι τεχνικά προβλήματα, γράψτε μας εκεί. Απαντάμε το αργότερο εντός 48 ωρών.

Οι Στήλες του PCsteps

FEATURED sale alert b10 x4 aa
Οδηγοί Αγοράς
QuickSteps#320 - Δωρεάν VPN Edge, Πλήρη Αποσύνδεση Facebook, Κρυφό Μήνυμα Σε Εικόνα, Καρτούν Εικόνα Προφίλ
QuickSteps
GamingSteps#20240322 - Battle Royale Στο WoW, Ρεκόρ Χρηστών Για Το Stardew Valley, GDC Και IGF Awards 2024
GamingSteps