อาร์กิวเมนต์บรรทัดคำสั่ง
อาร์กิวเมนต์บรรทัดคำสั่งคือพารามิเตอร์อินพุตที่อนุญาตให้ผู้ใช้เปิดใช้งานโปรแกรมเพื่อดำเนินการในลักษณะบางอย่าง เช่น เพื่อส่งออกข้อมูลเพิ่มเติม หรืออ่านข้อมูลจากแหล่งที่ระบุ หรือเพื่อตีความข้อมูลในรูปแบบที่ต้องการ
อาร์กิวเมนต์บรรทัดคำสั่ง Python
Python มีตัวเลือกมากมายในการอ่านอาร์กิวเมนต์บรรทัดคำสั่ง วิธีที่พบบ่อยที่สุดคือ -
- Python sys.argv
- โมดูล Python getopt
- โมดูล Python argparse
โมดูล Python sys
โมดูล sys เก็บอาร์กิวเมนต์บรรทัดคำสั่ง (CLA) ไว้ในรายการและเพื่อเรียกค้น เราใช้ sys.argv เป็นวิธีง่ายๆ ในการอ่านอาร์กิวเมนต์บรรทัดคำสั่งเป็นสตริง
import sys print(type(sys.argv)) print('The command line arguments are: ') for i in sys.argv: print(i)
โปรแกรมที่ทำงานอยู่เหนือโปรแกรมหนึ่ง ผลลัพธ์ของเราจะเป็นดังนี้ -
ผลลัพธ์
>python CommandLineOption.py H E L L O <class 'list'> The command line arguments are: CommandLineOption.py H E L L O
โมดูล Python getopt
โมดูล python getopt แยกวิเคราะห์ลำดับอาร์กิวเมนต์ เช่น sys.argv และส่งคืนลำดับของตัวเลือก &คู่อาร์กิวเมนต์ และลำดับของอาร์กิวเมนต์ที่ไม่ใช่ตัวเลือก
ไวยากรณ์
getopt.getopt(args, options, [long_options])
ที่ไหน:
-
อาร์กิวเมนต์ – รายการอาร์กิวเมนต์ที่จะแยกวิเคราะห์
-
ตัวเลือก – นี่คือสตริงของตัวอักษรตัวเลือกที่สคริปต์ต้องการจดจำ
-
Long_options – อันนี้เป็นพารามิเตอร์ทางเลือก เป็นรายการสตริงที่มีชื่อของตัวเลือกแบบยาว ซึ่งควรรองรับ
ไวยากรณ์ตัวเลือกโมดูล getopt ประกอบด้วย -
- -a
- -bval
- -b วาล
- --noarg
- --witharg=val
- --witharg วาล
มาทำความเข้าใจโมดูล getopt ผ่านตัวอย่างกัน -
ตัวเลือกแบบสั้น
โปรแกรมด้านล่างมีสองตัวเลือก -a และ –b โดยมีตัวเลือกที่สองที่ต้องการอาร์กิวเมนต์
import getopt print (getopt.getopt(['-a', '-bval', '-c', 'val'], 'ab:c:'))
ผลลัพธ์
([('-a', ''), ('-b', 'val'), ('-c', 'val')], [])
ตัวเลือกแบบยาว
โปรแกรมมีสองตัวเลือก --noarg และ –witharg และลำดับควรเป็น ['noarg', 'witharg=']
import getopt print (getopt.getopt([ '--noarg', '--witharg', 'val', '--witharg2=another' ],'',[ 'noarg', 'witharg=', 'witharg2=' ]))
ผลลัพธ์
([('--noarg', ''), ('--witharg', 'val'), ('--witharg2', 'another')], [])
อีกตัวอย่างหนึ่งเพื่อสาธิตการใช้งานโมดูล geopt -
import getopt import sys argv = sys.argv[1:] try: opts, args = getopt.getopt(argv, 'hm:d', ['help', 'my_file=']) print(opts) print(args) except getopt.GetoptError: print('Something Wrong!') sys.exit(2)
ผลลัพธ์
>python CommandLineOption.py -m 2 -h "Help" H E L L O [('-m', '2'), ('-h', '')] ['Help', 'H', 'E', 'L', 'L', 'O']
โมดูล Python argparse
โมดูล Python argparse เป็นวิธีที่ต้องการในการแยกวิเคราะห์อาร์กิวเมนต์บรรทัดคำสั่ง โมดูลนี้มีตัวเลือกหลายอย่าง เช่น อาร์กิวเมนต์ตำแหน่ง ค่าเริ่มต้นสำหรับอาร์กิวเมนต์ ข้อความช่วยเหลือ การระบุประเภทข้อมูลของอาร์กิวเมนต์ เป็นต้น
ด้านล่างนี้เป็นโปรแกรมง่ายๆ ในการทำความเข้าใจโมดูล argparse -
import argparse parser = argparse.ArgumentParser() parser.add_argument("string", help="Print the word in upper case letters") args = parser.parse_args() print(args.string.upper()) # This way argument can be manipulated.
ผลลัพธ์
>python CommandLineOption.py "Hello, pythoN" HELLO, PYTHON
เราสามารถตั้งค่าอาร์กิวเมนต์เสริมด้วยโมดูล argparse เช่น –verbosity