Πώς να προσθέσετε ορίσματα γραμμής εντολών σε ένα σενάριο Python

How Add Command Line Arguments Python Script



Εάν έχετε αναπτύξει ένα σενάριο ή εφαρμογή Python που προορίζεται κυρίως για εξομοίωση τερματικών ή ακόμη και εφαρμογές GUI, η προσθήκη επιχειρημάτων γραμμής εντολών μπορεί να βελτιώσει τη χρηστικότητα, την αναγνωσιμότητα κώδικα, τη δομή της εφαρμογής και τη συνολική φιλικότητα προς τον χρήστη της εφαρμογής για τους τελικούς χρήστες. Αυτά τα ορίσματα της γραμμής εντολών ονομάζονται επίσης επιλογές ή διακόπτες και λειτουργούν παρόμοια με τα ορίσματα που συνήθως βλέπετε σε δέσμες ενεργειών bash και άλλα προγράμματα που βασίζονται σε C / C ++.

Για να προσθέσετε ορίσματα σε δέσμες ενεργειών Python, θα πρέπει να χρησιμοποιήσετε μια ενσωματωμένη μονάδα με το όνομα argparse. Όπως υποδηλώνει το όνομα, αναλύει τα ορίσματα της γραμμής εντολών που χρησιμοποιούνται κατά την εκκίνηση ενός σεναρίου ή εφαρμογής Python. Αυτά τα ορίσματα ανάλυσης ελέγχονται επίσης από τη μονάδα argparse για να διασφαλιστεί ότι είναι κατάλληλου τύπου. Τα σφάλματα εμφανίζονται εάν υπάρχουν μη έγκυρες τιμές στα ορίσματα.







Η χρήση της μονάδας argparse μπορεί να κατανοηθεί καλύτερα μέσω παραδειγμάτων. Παρακάτω είναι μερικά δείγματα κώδικα που θα σας βοηθήσουν να ξεκινήσετε με τη μονάδα argparse.



Παράδειγμα 1: Δημιουργία επιχειρήματος και μηνύματος βοήθειας

Εξετάστε το παρακάτω δείγμα κώδικα:



εισαγωγήargparse

αναλυτής =argparse.ArgumentParser(περιγραφή='Ένα δοκιμαστικό πρόγραμμα.')

αψίδες= αναλυτήςΤοparse_args()

Η πρώτη δήλωση εισάγει τη μονάδα argparse. Στη συνέχεια, δημιουργείται μια νέα παρουσία του αντικειμένου ArgumentParser και παρέχεται μια σύντομη περιγραφή για το πρόγραμμα ως όρισμα. Το αντικείμενο ArgumentParser είναι απαραίτητο για τη μετατροπή των τιμών του ορίσματος της γραμμής εντολών σε τύπους δεδομένων που κατανοεί η Python. Αυτό γίνεται με τη μέθοδο parse_args του αντικειμένου ArgumentParser, όπως φαίνεται στην τελευταία πρόταση.





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

$ ./δοκιμήΤοpy

$ ./δοκιμήΤοpy-βοήθεια

Θα πρέπει να λάβετε κάποια έξοδο παρόμοια με αυτήν:



χρήση: test.py [-h]


Ένα δοκιμαστικό πρόγραμμα.


προαιρετικά επιχειρήματα:

-h, --Βοήθεια για εμφάνιση αυτού του μηνύματος βοήθειας και έξοδο

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

Παράδειγμα 2: Χειριστείτε ένα επιχείρημα συμβολοσειράς

Για να προσθέσετε ορίσματα αποδεκτά από το σενάριο python, πρέπει να χρησιμοποιήσετε τη μέθοδο add_argument. Ρίξτε μια ματιά στον ακόλουθο κώδικα:

εισαγωγήargparse

αναλυτής =argparse.ArgumentParser(περιγραφή='Ένα δοκιμαστικό πρόγραμμα.')

αναλυτήςΤοadd_argument('print_string', βοήθεια='Εκτυπώνει το παρεχόμενο επιχείρημα.')

αψίδες= αναλυτήςΤοparse_args()

Τυπώνω(αψίδεςprint_string)

Προστέθηκε μια νέα δήλωση που δείχνει τη χρήση της μεθόδου add_argument. Οποιοδήποτε όρισμα προστίθεται κατά την εκκίνηση του σεναρίου θα αντιμετωπίζεται ως αντικείμενο print_string από το ArgumentParser.

Λάβετε υπόψη ότι από προεπιλογή, η μέθοδος add_argument αντιμετωπίζει τις τιμές που λαμβάνονται από τα ορίσματα ως συμβολοσειρές, οπότε δεν χρειάζεται να καθορίσετε ρητά τον τύπο σε αυτήν την περίπτωση. Μια προεπιλεγμένη τιμή του Καμία εκχωρείται επίσης στα προστιθέμενα ορίσματα, εκτός εάν παρακαμφθεί.

Για άλλη μια φορά ρίξτε μια ματιά στο μήνυμα βοήθειας:

χρήση: test.py [-h] [print_string]


Ένα δοκιμαστικό πρόγραμμα.


θετικά επιχειρήματα:

print_string Εκτυπώνει το παρεχόμενο όρισμα.


προαιρετικά επιχειρήματα:

-h, --Βοήθεια για εμφάνιση αυτού του μηνύματος βοήθειας και έξοδο

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

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

εισαγωγήargparse

αναλυτής =argparse.ArgumentParser(περιγραφή='Ένα δοκιμαστικό πρόγραμμα.')

αναλυτήςΤοadd_argument('--print_string', βοήθεια='Εκτυπώνει το παρεχόμενο επιχείρημα.',Προκαθορισμένο=ΠΡΟΣ ΤΟτυχαίος σειράΤο)

αψίδες= αναλυτήςΤοparse_args()

Τυπώνω(αψίδεςprint_string)

Τώρα όταν εκτελείτε το script.py χωρίς κανένα όρισμα, θα πρέπει να λάβετε μια τυχαία συμβολοσειρά. ως έξοδο. Μπορείτε επίσης προαιρετικά να χρησιμοποιήσετε τη λέξη -κλειδί –print_string για να εκτυπώσετε οποιαδήποτε συμβολοσειρά της επιλογής σας.

$ ./δοκιμήΤοpy--print_string LinuxHint.μεLinuxHint.com

Λάβετε υπόψη ότι μπορείτε να καταστήσετε υποχρεωτικό ένα προαιρετικό όρισμα χρησιμοποιώντας ένα πρόσθετο απαιτούμενο = True επιχείρημα.

Τέλος, μπορείτε επίσης να ορίσετε συντομογραφίες του ορίσματος χρησιμοποιώντας - (μονή παύλα) για να μειώσετε τη λεκτικότητα.

εισαγωγήargparse

αναλυτής =argparse.ArgumentParser(περιγραφή='Ένα δοκιμαστικό πρόγραμμα.')

αναλυτήςΤοadd_argument(, '--print_string', βοήθεια='Εκτυπώνει το παρεχόμενο επιχείρημα.',Προκαθορισμένο=ΠΡΟΣ ΤΟτυχαίος σειράΤο)

αψίδες= αναλυτήςΤοparse_args()

Τυπώνω(αψίδεςprint_string)

Η εκτέλεση της ακόλουθης εντολής θα σας δώσει το ίδιο αποτέλεσμα με το παραπάνω:

$ ./δοκιμήΤοpy-p LinuxHint.με

Παράδειγμα 3: Χειρισμός ενός ακέραιου επιχειρήματος

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

εισαγωγήargparse

αναλυτής =argparse.ArgumentParser(περιγραφή='Ένα δοκιμαστικό πρόγραμμα.')

αναλυτήςΤοadd_argument('-Π', '--print_string', βοήθεια='Εκτυπώνει το παρεχόμενο επιχείρημα.', τύπος=int)

αψίδες= αναλυτήςΤοparse_args()

Τυπώνω(αψίδεςprint_string)

Δοκιμάστε να εκτελέσετε την ακόλουθη εντολή:

$ ./δοκιμήΤοpy-p LinuxHint.με

Θα πρέπει να λάβετε ένα σφάλμα όπως αυτό:

χρήση: test.py [-h] [-p PRINT_STRING]

test.py: error: argument -p/-print_string: invalid int value: 'LinuxHint.com'

Η παροχή ακέραιης τιμής θα σας δώσει το σωστό αποτέλεσμα:

$ ./δοκιμήΤοpy10001000

Παράδειγμα 4: Χειριστείτε True και False Toggles

Μπορείτε να περάσετε ορίσματα χωρίς τιμές για να τα αντιμετωπίσετε ως σημαίες True και False χρησιμοποιώντας το όρισμα ενέργειας.

εισαγωγήargparse

αναλυτής =argparse.ArgumentParser(περιγραφή='Ένα δοκιμαστικό πρόγραμμα.')

αναλυτήςΤοadd_argument('-Π', '--print_string', βοήθεια='Εκτυπώνει το παρεχόμενο επιχείρημα.',δράση='store_true')

αψίδες= αναλυτήςΤοparse_args()

Τυπώνω(αψίδεςprint_string)

Εκτελέστε την παρακάτω εντολή για να λάβετε ένα απλό True ως έξοδο:

$ ./δοκιμήΤοpy

Εάν εκτελέσετε το σενάριο χωρίς το όρισμα -p, θα αντιστοιχιστεί μια τιμή False. Η τιμή store_true της λέξης -κλειδιού ενέργειας αποδίδει μια True τιμή στη μεταβλητή print_string κάθε φορά που το όρισμα -p καθορίζεται ρητά, διαφορετικά ορίζεται False στη μεταβλητή.

Παράδειγμα 5: Αντιμετώπιση τιμών επιχειρημάτων ως λίστας

Εάν θέλετε να λάβετε πολλές τιμές ταυτόχρονα και να τις αποθηκεύσετε στη λίστα, πρέπει να παρέχετε λέξη -κλειδί nargs στην ακόλουθη μορφή:

εισαγωγήargparse

αναλυτής =argparse.ArgumentParser(περιγραφή='Ένα δοκιμαστικό πρόγραμμα.')

αναλυτήςΤοadd_argument('-Π', '--print_string', βοήθεια='Εκτυπώνει το παρεχόμενο επιχείρημα.',nargs='*')

αψίδες= αναλυτήςΤοparse_args()

Τυπώνω(αψίδεςprint_string)

Εκτελέστε την ακόλουθη εντολή για να δοκιμάσετε τον παραπάνω κώδικα:

$ ./δοκιμήΤοpy-π α β

Θα πρέπει να λάβετε κάποια έξοδο όπως αυτή:

['a', 'b']

συμπέρασμα

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