Η εγγραφή της εξόδου της κονσόλας στο ίδιο μέρος μπορεί να είναι μια χρήσιμη τεχνική για τους προγραμματιστές όταν εργάζονται με εφαρμογές Python, ειδικά κατά την ανάπτυξη διεπαφών χρήστη στη γραμμή εντολών, τη δημιουργία δεικτών προόδου και την ενημέρωση δεδομένων κονσόλας σε πραγματικό χρόνο. Αυτό το άρθρο θα συζητήσει μια λύση για την αντικατάσταση της εξόδου της κονσόλας, θα εξηγήσει τον κώδικα βήμα προς βήμα και θα βουτήξει σε συγκεκριμένες βιβλιοθήκες και ενσωματωμένες συναρτήσεις Python που καθιστούν δυνατή αυτήν την εργασία.
Για να το πετύχουμε αυτό, μπορούμε να χρησιμοποιήσουμε τις περίφημες «κατάρες» της βιβλιοθήκης Python που είναι ειδικά σχεδιασμένες για τη δημιουργία εφαρμογών που βασίζονται σε τερματικά που εξαρτώνται σε μεγάλο βαθμό από τη χρήση διεπαφών χρήστη που βασίζονται σε κείμενο. Ωστόσο, για λόγους απλότητας και ευκολίας κατανόησης, θα χρησιμοποιήσουμε τις ενσωματωμένες μονάδες «sys» και «time» της Python για να αντικαταστήσουμε τις εξόδους της κονσόλας.
Αντικατάσταση εξόδου κονσόλας σε Python
Η κύρια ιδέα είναι να χρησιμοποιήσουμε τη συνάρτηση sys.stdout.write() , η οποία μας επιτρέπει να εκτυπώσουμε στην ίδια γραμμή, μαζί με τον χαρακτήρα επιστροφής («r») για να επιστρέψουμε στην αρχή της γραμμής, επιτρέποντάς μας ουσιαστικά να αντικαταστήσουμε την έξοδο.
Ακολουθεί ένα παράδειγμα αντικατάστασης εξόδου κονσόλας χρησιμοποιώντας Python:
import time
import sys
for i in range(10):
sys.stdout.write("rStep: %d" % i)
sys.stdout.flush()
time.sleep(1)
Βήμα-βήμα Επεξήγηση του Κώδικα
1. Πρώτα, εισαγάγετε τις απαιτούμενες ενότητες:
import time import sys
Η ενότητα χρόνου θα χρησιμοποιηθεί για την προσθήκη καθυστέρησης μεταξύ των επαναλήψεων και η ενότητα συστήματος θα χρησιμοποιηθεί για την εγγραφή εξόδου στην κονσόλα.
2. Στη συνέχεια, δημιουργήστε έναν βρόχο για επανάληψη σε μια σειρά αριθμών, προσομοιώνοντας έναν μετρητή προόδου:
for i in range(10):
Αυτός ο βρόχος επαναλαμβάνεται από το 0 έως το 9, εκτελώντας ουσιαστικά δέκα φορές.
3. Μέσα στον βρόχο, χρησιμοποιήστε τη συνάρτηση sys.stdout.write() για να εκτυπώσετε τον τρέχοντα αριθμό επανάληψης μαζί με μια ετικέτα:
sys.stdout.write("rStep: %d" % i)
Ο χαρακτήρας "r" είναι η επιστροφή μεταφοράς που λειτουργεί ως επαναφορά στην αρχή της γραμμής, επιτρέποντας στην επόμενη έξοδο να αντικαταστήσει την τρέχουσα.
4. Βεβαιωθείτε ότι χρησιμοποιείτε την εντολή sys.stdout.flush() μετά την εγγραφή στην κονσόλα:
sys.stdout.flush()
Η συνάρτηση flush() διαγράφει το εσωτερικό buffer και διασφαλίζει ότι η έξοδος εμφανίζεται αμέσως.
5. Τέλος, προσθέστε μια καθυστέρηση χρησιμοποιώντας τη συνάρτηση time.sleep() :
time.sleep(1)
Αυτή η παύση θα διαρκέσει για ένα δευτερόλεπτο, διευκολύνοντας την παρατήρηση της εξόδου που αντικαθίσταται.
Τώρα μπορείτε να δείτε πώς η έξοδος της κονσόλας αντικαθίσταται σε κάθε επανάληψη.
Επισκόπηση της βιβλιοθήκης «sys».
Η βιβλιοθήκη sys είναι μια ισχυρή ενσωματωμένη ενότητα Python που παρέχει πρόσβαση στα εσωτερικά του διερμηνέα και σε διάφορες παραμέτρους που αφορούν συγκεκριμένα το σύστημα. Σε αυτό το άρθρο, εστιάσαμε στη χρήση των συναρτήσεων sys.stdout.write() και sys.stdout.flush() για την αντικατάσταση της εξόδου της κονσόλας. Ωστόσο, η βιβλιοθήκη "sys" προσφέρει πολλές άλλες λειτουργίες, όπως ορίσματα γραμμής εντολών, σειρά byte, εξαιρέσεις και προκαθορισμένες διαδρομές.
Επισκόπηση της Βιβλιοθήκης «χρόνου».
Η βιβλιοθήκη χρόνου είναι μια άλλη ενσωματωμένη ενότητα Python που προσφέρει μια ποικιλία λειτουργιών που σχετίζονται με τον χειρισμό και την επεξεργασία χρόνου. Στο παράδειγμά μας, χρησιμοποιήσαμε τη συνάρτηση time.sleep() για να δημιουργήσουμε μια καθυστέρηση μεταξύ των επαναλήψεων. Η βιβλιοθήκη "χρόνου" παρέχει επίσης άλλα εργαλεία για τη μέτρηση του χρόνου εκτέλεσης, τη μετατροπή μεταξύ μορφών ώρας και τη λήψη της τρέχουσας ώρας. Αυτή η ενότητα είναι απαραίτητη για προγραμματιστές που εργάζονται με συναρτήσεις που σχετίζονται με το χρόνο ή προγραμματίζουν εργασίες σε εφαρμογές Python.