Επιλύθηκε: εγγραφή εξόδου κονσόλας στην ίδια θέση

Η εγγραφή της εξόδου της κονσόλας στο ίδιο μέρος μπορεί να είναι μια χρήσιμη τεχνική για τους προγραμματιστές όταν εργάζονται με εφαρμογές 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
   

Τα Διαχωριστικά ώρα η ενότητα θα χρησιμοποιηθεί για να προσθέσει καθυστέρηση μεταξύ των επαναλήψεων και το 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.

Σχετικές αναρτήσεις:

Αφήστε ένα σχόλιο