כיצד לנתח ארגומנטים בשורת הפקודה ב- Python

How Parse Arguments Command Line Python



ארגומנטים של שורת הפקודה משמשים להעברת נתונים בתוכנית בזמן ביצוע התוכנית. תכונה זו זמינה ברוב שפות התכנות הפופולריות. אך העיבוד של ארגומנטים בשורת הפקודה שונה עבור שפות שונות. ערכי הארגומנטים ניתנים בשם התוכנית בזמן הפעלת התוכנית. שפת פייתון תומכת בתכונה זו. כיצד מנותחים ארגומנטים של שורת פקודה בתסריט של פייתון מוצג במאמר זה.

ניתוח ארגומנט של שורת פקודה באמצעות sys מודול

ארגומנטים של שורת הפקודה מאוחסנים ברשימה באמצעות sys מודול. sys.argv משמש לקריאת הערכים של הארגומנטים של שורת הפקודה. ניתן לספור את המספר הכולל של ארגומנטים של שורת הפקודה באמצעות len () פוּנקצִיָה. השימוש במודול זה מתואר בחלק של המאמר.







דוגמא 1: קריאת מספר הארגומנטים וערכי הארגומנט

צור קובץ עם סקריפט הפיתון הבא. כאן, ערכי הארגומנט של שורת הפקודה מאוחסנים במשתנה, argv כמו שפות אחרות. len () שיטה סופרת את המספר הכולל של ארגומנטים שהועברו בזמן ביצוע התסריט. ערכי ארגומנט מודפסים כמערך בסוף התסריט.



# ייבוא ​​מודול sys
יְבוּא sys

# הדפס את המספר הכולל של ארגומנטים
הדפס('סך הכל טיעונים:', len(sys.argv))
הדפס('ערכי הטיעון הם:', עמ(sys.argv))

תְפוּקָה:



התסריט לעיל מבוצע כאן באמצעות ארבעה ארגומנטים של שורת הפקודה. הטענה הראשונה היא שם התסריט ואחרים הם ערכים מספריים. הפלט הבא יופיע לאחר הפעלת התסריט.





דוגמה 2: קריאת ערכי ארגומנט באמצעות הלולאה



בדוגמה הקודמת ערכי הארגומנט מודפסים כמערך. צור קובץ עם הסקריפט הבא להדפסת סוג משתנה הארגומנט והדפס כל ערך ארגומנט בכל שורה באמצעות לולאה.

# ייבוא ​​מודול sys
יְבוּא sys

# הדפס את סוג המשתנה, sys.argv
הדפס(סוּג(sys.argv))

# הדפס כל ארגומנט של שורת פקודה בכל שורה
הדפס('הארגומנטים של שורת הפקודה הם:')
לאניב sys.argv:
הדפס(אני)

תְפוּקָה:

התסריט לעיל מבוצע על ידי מתן שלושה ארגומנטים עם שם התסריט. הפלט הבא יופיע לאחר הפעלת התסריט.

ניתוח ארגומנט שורת פקודה באמצעות מודול getopt

למעלה מודול משמש לנתח ארגומנטים של שורת הפקודה עם האפשרויות. למעלה () שיטת מודול זה משמשת לקריאת הטיעונים. לשיטה זו שלושה טענות. שני הטיעונים הראשונים הם חובה והטענה האחרונה היא אופציונלית. להלן השימושים של טיעונים אלה.

טוען: הוא מכיל את הטיעון שנלקח מתוך הארגומנט של שורת הפקודה.

short_option: זה יכול להיות כל אות שעוברת עם הטיעון.

אופציה ארוכה: הוא משמש להגדרת אפשרויות ארוכות עם שני חלקים. אלה הם שם האפשרות וערך האופציה.

תחביר: getopt.getopt (args, short_option, [long_option])

דוגמה 3: קריאת ערכי ארגומנט באמצעות אפשרויות getopt קצרות

למעלה המודול מכיל יותר תכונות מ- sys מודול. הדוגמה הבאה מראה כיצד ניתן להשתמש באפשרויות קצרות למעלה () שיטה. argv משתנה יאחסן את הארגומנטים של שורת הפקודה על ידי השמטת שם הסקריפט. לאחר מכן, מוגדרות שתי אפשרויות ב- למעלה () שיטה שניתן להשתמש בה עם הארגומנט בזמן הריצה. אם מתרחשת שגיאה כלשהי תוצג הודעת שגיאה.

# ייבוא ​​מודול getopt
יְבוּא למעלה

# ייבוא ​​מודול sys
יְבוּא sys

# משתנה ארגומנט חנות השמטת שם הסקריפט
argv= sys.argv[1:]

לְנַסוֹת:
# הגדר אפשרויות קצרות של getopt
אפשרויות,טוען= למעלה.למעלה(argv, 'x: y:')

# הדפס את האפשרויות והטיעון
הדפס(אפשרויות)
הדפס(טוען)

מלבד למעלה.GetoptError:

# הדפס את הודעת השגיאה אם ​​ניתנת האפשרות הלא נכונה
הדפס('מסופקת האפשרות הלא נכונה')

# הפסק את התסריט
sys.יְצִיאָה(2)

תְפוּקָה:

הפעל את הסקריפט ללא כל טיעון, ארגומנטים עם אפשרויות נכונות וטענות עם האפשרות הלא נכונה.

דוגמה 4: קריאת ערכי ארגומנט באמצעות אפשרויות getopt קצרות וארוכות

דוגמה זו מראה כיצד ניתן להשתמש באפשרויות קצרות וארוכות כאחד עם ערכי הארגומנט. זה יוסיף שני מספרים כאשר '-ל' אוֹ '-לְהוֹסִיף' ישמש כאופציה וחסר שני מספרים כאשר ' -s ' או ' -תַת' ישמש כאופציה בזמן הריצה.

# ייבוא ​​מודול getopt
יְבוּא למעלה

# ייבוא ​​מודול sys
יְבוּא sys

# משתנה ארגומנט חנות השמטת שם הסקריפט
argv= sys.argv[1:]

# אתחל משתנה תוצאות
תוֹצָאָה=0

לְנַסוֹת:

# הגדר getopt אפשרויות קצרות וארוכות
אפשרויות,טוען= למעלה.למעלה(sys.argv[1:], 'כפי ש', ['הוסף =','תת ='])

# קרא כל אפשרות באמצעות לולאה
להעדיף,כּוֹעֵסבאפשרויות:
# חשב את הסכום אם האפשרות היא -א או -להוסיף
אםהעדיףב ('-ל', '--לְהוֹסִיף'):
תוֹצָאָה= int(argv[1])+int(argv[2])

# חשב את החתיכה אם האפשרות היא -s או -משנה
אליףהעדיףב ('-ש', '--תַת'):
תוֹצָאָה= int(argv[1])-int(argv[2])

הדפס('תוצאה =',תוֹצָאָה)

מלבד למעלה.GetoptError:

# הדפס את הודעת השגיאה אם ​​ניתנת האפשרות הלא נכונה
הדפס('מסופקת האפשרות הלא נכונה')

# הפסק את התסריט
sys.יְצִיאָה(2)

תְפוּקָה:

הפעל את הסקריפט ללא כל טיעונים ואפשרויות, ארגומנטים עם אפשרות '-א', ארגומנטים עם אפשרות '-ס' וטענות עם אפשרות לא נכונה.

ניתוח ארגומנט שורת פקודה באמצעות מודול argparse

מודול Argparse מכיל הרבה אפשרויות לקריאת ארגומנטים של שורת הפקודה. ניתן לספק ערכי ברירת מחדל של ארגומנט, הטיעון עם סוג הנתונים, ארגומנטים מיקוםיים, הודעת עזרה וכו '.

דוגמה 5: קריאת ארגומנטים של שורת פקודה באמצעות argparse

הדוגמה הבאה מראה את השימוש ב- ארגפרס מודול לקריאת ארגומנט שורת פקודה. כאן מוגדרות שתי אפשרויות לקריאת ארגומנטים של שורת הפקודה. אלו הם '-N' או '-שם' ו '-E' או '– מייל'. אם המשתמש מספק טיעון שגוי, הוא יראה שגיאה עם הודעת שימוש. אם המשתמש מספק אפשרויות נכונות עם הארגומנטים, הוא יציג את ערכי הארגומנט. אם המשתמש מפעיל את הסקריפט עם אפשרות '–עזרה', הוא יספק מסר הכרחי להפעלת הסקריפט.

# ייבוא ​​מודול ארגפרס
יְבוּאארגפרס

# ייבוא ​​מודול sys
יְבוּא sys

# הצהרת פונקציה להגדרת ארגומנטים של שורת הפקודה
defreadOptions(טוען=sys.argv[1:]):
מנתח =ארגפרס.ArgumentParser(תיאור='רשימות פקודות הניתוח.')
מנתח.add_argument('-ן', '--שֵׁם', עֶזרָה='הקלד את שמך.')
מנתח.add_argument('-ו', '--אימייל', עֶזרָה='הקלד את הדוא'ל שלך.')
בוחר= מנתח.parse_args(טוען)
לַחֲזוֹרבוחר

# התקשר לפונקציה כדי לקרוא את ערכי הארגומנט
אפשרויות=readOptions(sys.argv[1:])
הדפס(אפשרויות.שֵׁם)
הדפס(אפשרויות.אימייל)

תְפוּקָה:

הפעל את התסריט עם אפשרות שגויה, אפשרות נכונה ואפשרות עזרה.

סיכום:

דרכים שונות לקריאת טיעוני שורת הפקודה מוסברות במדריך זה באמצעות שלושה מודולי פייתון. אני מקווה שהדרכה זו תעזור לקודד שרוצה לקרוא נתונים באמצעות ארגומנטים של שורת פקודה בפייתון.

צפו בסרטון המחבר: פה