argparse
เอกสารที่ดีพอสมควร แต่ใบออกรายละเอียดที่มีประโยชน์น้อยซึ่งอาจจะไม่ชัดเจน (@Diego Navarro พูดถึงบางอย่างแล้ว แต่ฉันจะพยายามขยายคำตอบของเขาเล็กน้อย) การใช้งานพื้นฐานมีดังนี้:
parser = argparse.ArgumentParser()
parser.add_argument('-f', '--my-foo', default='foobar')
parser.add_argument('-b', '--bar-value', default=3.14)
args = parser.parse_args()
วัตถุที่คุณได้รับกลับมาจากparse_args()
วัตถุ 'Namespace': วัตถุที่มีตัวแปรสมาชิกถูกตั้งชื่อหลังจากอาร์กิวเมนต์บรรทัดคำสั่งของคุณ Namespace
วัตถุเป็นวิธีที่คุณเข้าถึงข้อโต้แย้งและค่านิยมที่เกี่ยวข้องกับพวกเขาของคุณ:
args = parser.parse_args()
print args.my_foo
print args.bar_value
(โปรดสังเกตว่า argparse
แทนที่ '-' ในชื่ออาร์กิวเมนต์ของคุณด้วยเครื่องหมายขีดล่างเมื่อตั้งชื่อตัวแปร)
ในหลาย ๆ สถานการณ์คุณอาจต้องการใช้การโต้แย้งแบบง่ายๆเช่นเดียวกับค่าสถานะซึ่งไม่มีค่า คุณสามารถเพิ่มสิ่งเหล่านี้ในการโต้แย้งแบบนี้:
parser.add_argument('--foo', action='store_true')
parser.add_argument('--no-foo', action='store_false')
ด้านบนจะสร้างตัวแปรที่ชื่อว่า 'foo' ด้วยค่า True และ 'no_foo' ด้วยค่า False ตามลำดับ:
if (args.foo):
print "foo is true"
if (args.no_foo is False):
print "nofoo is false"
โปรดทราบว่าคุณสามารถใช้ตัวเลือก "จำเป็น" เมื่อเพิ่มอาร์กิวเมนต์:
parser.add_argument('-o', '--output', required=True)
ด้วยวิธีนี้หากคุณละเว้นอาร์กิวเมนต์นี้ที่บรรทัดคำสั่งargparse
จะบอกคุณว่ามันหายไปและหยุดการทำงานของสคริปต์ของคุณ
สุดท้ายทราบว่าเป็นไปได้ที่จะสร้างโครงสร้าง dict ของข้อโต้แย้งของคุณโดยใช้vars
ฟังก์ชั่นถ้ามันทำให้ชีวิตง่ายขึ้นสำหรับคุณ
args = parser.parse_args()
argsdict = vars(args)
print argsdict['my_foo']
print argsdict['bar_value']
อย่างที่คุณเห็นvars
ส่งกลับค่าพจน์ที่มีชื่ออาร์กิวเมนต์เป็นคีย์และค่าของมันเป็นเอ่อค่า
มีตัวเลือกและสิ่งอื่น ๆ อีกมากมายที่คุณสามารถทำได้ แต่สิ่งนี้ควรครอบคลุมสถานการณ์การใช้งานทั่วไปที่สำคัญที่สุด
sys.argv
ข้อโต้แย้งที่คุณต้องการ ...