คำถามติดแท็ก argparse

โมดูล Python สำหรับใช้อินเตอร์เฟสบรรทัดคำสั่ง

3
โต้แย้งอาร์กิวเมนต์ตำแหน่งเพิ่มเติมหรือไม่
ฉันมีสคริปต์ที่ตั้งใจจะใช้เช่นนี้ usage: installer.py dir [-h] [-v] dir เป็นอาร์กิวเมนต์ตำแหน่งซึ่งมีการกำหนดเช่นนี้: parser.add_argument('dir', default=os.getcwd()) ฉันต้องการdirที่จะเป็นตัวเลือก: cwdเมื่อมันไม่ได้ระบุไว้มันก็ควรจะเป็น แต่น่าเสียดายที่เมื่อฉันไม่ได้ระบุข้อโต้แย้งที่ฉันได้รับdirError: Too few arguments
652 python  argparse 

19
การแยกค่าบูลีนด้วย argparse
ฉันต้องการใช้ argparse เพื่อวิเคราะห์อาร์กิวเมนต์บรรทัดคำสั่งบูลีนที่เขียนเป็น "--foo True" หรือ "--foo False" ตัวอย่างเช่น: my_program --my_boolean_flag False อย่างไรก็ตามรหัสทดสอบต่อไปนี้ไม่ได้ทำในสิ่งที่ฉันต้องการ: import argparse parser = argparse.ArgumentParser(description="My parser") parser.add_argument("--my_bool", type=bool) cmd_line = ["--my_bool", "False"] parsed_args = parser.parse(cmd_line) น่าเศร้าparsed_args.my_boolประเมินTrueว่า เป็นกรณีนี้แม้ในขณะที่ฉันจะเปลี่ยนcmd_lineให้เป็น["--my_bool", ""]ซึ่งเป็นที่น่าแปลกใจตั้งแต่bool("")evalutates Falseไป ฉันจะได้รับ argparse การแยก"False", "F"และกรณีที่ต่ำกว่าของพวกเขาจะเป็นสายพันธุ์False?

11
ต้องการตัวอย่างอาร์กิวเมนต์แบบง่าย: 1 อาร์กิวเมนต์, 3 ผลลัพธ์
เอกสารสำหรับโมดูลหลาม argparseขณะที่ยอดเยี่ยมผมว่ามากเกินไปสำหรับสมองเริ่มต้นเล็ก ๆ ของฉันที่จะเข้าใจในขณะนี้ ฉันไม่จำเป็นต้องทำคณิตศาสตร์ในบรรทัดคำสั่งหรือเข้าไปยุ่งเกี่ยวกับการจัดรูปแบบบรรทัดบนหน้าจอหรือเปลี่ยนตัวละครตัวเลือก ทั้งหมดที่ฉันต้องการจะทำคือ"ถ้าหาเรื่องคือ A, ทำเช่นนี้ถ้า B ทำอย่างนั้นถ้าไม่มีการแสดงความช่วยเหลือดังกล่าวข้างต้นและเลิก"
529 python  argparse 

9
ฉันจะส่งรายการเป็นอาร์กิวเมนต์บรรทัดคำสั่งด้วย argparse ได้อย่างไร
ฉันพยายามส่งรายการเป็นอาร์กิวเมนต์ไปยังโปรแกรมบรรทัดคำสั่ง มีargparseตัวเลือกให้ส่งรายการเป็นตัวเลือกหรือไม่? parser.add_argument('-l', '--list', type=list, action='store', dest='list', help='<Required> Set flag', required=True) สคริปต์เรียกว่าเหมือนด้านล่าง python test.py -l "265340 268738 270774 270817"
443 python  argparse 

3
Python argparse ตั้งค่าสถานะบรรทัดคำสั่งโดยไม่มีอาร์กิวเมนต์
ฉันจะเพิ่มการตั้งค่าสถานะทางเลือกให้กับบรรทัดคำสั่งของฉันได้อย่างไร เช่น. ดังนั้นฉันสามารถเขียน python myprog.py หรือ python myprog.py -w ฉันเหนื่อย parser.add_argument('-w') แต่ฉันเพิ่งได้รับข้อความแจ้งข้อผิดพลาดว่า Usage [-w W] error: argument -w: expected one argument ซึ่งฉันใช้มันหมายความว่ามันต้องการค่าอาร์กิวเมนต์สำหรับตัวเลือก -w วิธีการเพียงแค่ยอมรับธงคืออะไร? ฉันพบhttp://docs.python.org/library/argparse.htmlค่อนข้างทึบแสงสำหรับคำถามนี้

7
Python argparse: วิธีแทรกบรรทัดใหม่ในข้อความช่วยเหลือได้อย่างไร
ฉันใช้argparsePython 2.7ในการแยกวิเคราะห์ตัวเลือกอินพุต หนึ่งในตัวเลือกของฉันคือทางเลือกที่หลากหลาย ฉันต้องการสร้างรายการในข้อความช่วยเหลือของมันเช่น from argparse import ArgumentParser parser = ArgumentParser(description='test') parser.add_argument('-g', choices=['a', 'b', 'g', 'd', 'e'], default='a', help="Some option, where\n" " a = alpha\n" " b = beta\n" " g = gamma\n" " d = delta\n" " e = epsilon") parser.parse_args() อย่างไรก็ตามตัดargparseบรรทัดใหม่ทั้งหมดและช่องว่างที่ต่อเนื่องกัน ผลลัพธ์ดูเหมือนว่า ~ / ดาวน์โหลด: 52 $ python2.7 …
341 python  argparse 

3
อาร์กิวเมนต์: วิธีรวมค่าเริ่มต้นใน '--help' หรือไม่
สมมติว่าฉันมีตัวอย่างอาร์กิวเมนต์ต่อไปนี้: diags.cmdln_parser.add_argument( '--scan-time', action = 'store', nargs = '?', type = int, default = 5, help = "Wait SCAN-TIME seconds between status checks.") ปัจจุบัน--helpส่งคืน: usage: connection_check.py [-h] [--version] [--scan-time [SCAN_TIME]] Test the reliability/uptime of a connection. optional arguments: -h, --help show this help message and exit --version show program's version …
307 python  argparse 

5
เหตุใดจึงต้องใช้ argparse แทนที่จะใช้ optparse
ฉันสังเกตเห็นว่าเอกสาร Python 2.7 มีโมดูลการแยกวิเคราะห์บรรทัดคำสั่งอื่น นอกเหนือไปgetoptและตอนนี้เรามีoptparseargparse เหตุใดจึงไม่มีโมดูลการแยกวิเคราะห์บรรทัดคำสั่งอื่นถูกสร้างขึ้น ทำไมฉันจึงควรใช้แทนoptparse? มีคุณสมบัติใหม่ที่ฉันควรรู้หรือไม่?

4
อาร์กิวเมนต์: อาร์กิวเมนต์ที่จำเป็นแสดงรายการอยู่ภายใต้“ อาร์กิวเมนต์ที่เลือกได้” หรือไม่
ฉันใช้รหัสง่าย ๆ ต่อไปนี้เพื่อแยกอาร์กิวเมนต์บางอย่าง โปรดทราบว่าจำเป็นต้องใช้หนึ่งในนั้น น่าเสียดายที่เมื่อผู้ใช้รันสคริปต์โดยไม่ได้ระบุอาร์กิวเมนต์ข้อความการใช้งาน / ช่วยเหลือที่แสดงไม่ได้ระบุว่ามีอาร์กิวเมนต์ที่ไม่จำเป็นซึ่งฉันพบว่าสับสนมาก ฉันจะรับไพ ธ อนเพื่อระบุว่าการโต้แย้งนั้นไม่จำเป็นหรือไม่? นี่คือรหัส: import argparse if __name__ == '__main__': parser = argparse.ArgumentParser( description='Foo') parser.add_argument('-i','--input', help='Input file name', required=True) parser.add_argument('-o','--output', help='Output file name', default="stdout") args = parser.parse_args() print ("Input file: %s" % args.input ) print ("Output file: %s" % args.output ) เมื่อรันโค้ดข้างต้นโดยไม่ต้องระบุอาร์กิวเมนต์ที่ต้องการฉันจะได้ผลลัพธ์ต่อไปนี้: usage: …
229 python  argparse 

13
แสดงข้อความช่วยเหลือด้วย python argparse เมื่อสคริปต์ถูกเรียกโดยไม่มีข้อโต้แย้งใด ๆ
นี่อาจเป็นแบบง่าย ๆ สมมติว่าฉันมีโปรแกรมที่ใช้ argparse เพื่อประมวลผลอาร์กิวเมนต์บรรทัด / ตัวเลือก ต่อไปนี้จะพิมพ์ข้อความ 'ช่วยเหลือ': ./myprogram -h หรือ: ./myprogram --help แต่ถ้าฉันรันสคริปต์โดยไม่มีข้อโต้แย้งใด ๆ มันก็ไม่ทำอะไรเลย สิ่งที่ฉันต้องการให้ทำคือการแสดงข้อความการใช้งานเมื่อมันถูกเรียกโดยไม่มีข้อโต้แย้ง นั่นเป็นวิธีที่ทำ?
226 python  argparse 

3
Python argparse ละเว้นอาร์กิวเมนต์ที่ไม่รู้จัก
optparse เวอร์ชันเก่าจะไม่สนใจอาร์กิวเมนต์ที่ไม่รู้จักทั้งหมดและดำเนินการต่อ ในสถานการณ์ส่วนใหญ่สิ่งนี้ไม่เหมาะและถูกเปลี่ยนเป็นอาร์กิวเมนต์ แต่มีบางสถานการณ์ที่คุณต้องการละเว้นอาร์กิวเมนต์ที่ไม่รู้จักและแยกวิเคราะห์อาร์กิวเมนต์ที่คุณระบุ ตัวอย่างเช่น: parser = argparse.ArgumentParser() parser.add_argument('--foo', dest="foo") parser.parse_args() $python myscript.py --foo 1 --bar 2 error: unrecognized arguments: --bar อย่างไรก็ตามมีการเขียนทับนี้หรือไม่?

2
ต้องการอาร์กิวเมนต์สองตัวใดตัวหนึ่งโดยใช้อาร์กิวเมนต์
ได้รับ: import argparse pa = argparse.ArgumentParser() pa.add_argument('--foo') pa.add_argument('--bar') print pa.parse_args('--foo 1'.split()) ฉันจะทำอย่างไร ทำอย่างหนึ่งอย่างน้อย "ฟูบาร์" บังคับ: --foo x, --bar yและ--foo x --bar yจะมีการปรับ ทำอย่างใดอย่างหนึ่งมากที่สุดของ "ฟูบาร์" ที่บังคับใช้: --foo xหรือ--bar yจะมีการปรับ--foo x --bar yไม่ได้
183 python  argparse 

3
Python argparse: ค่าเริ่มต้นหรือค่าที่ระบุ
ฉันต้องการมีอาร์กิวเมนต์ที่เป็นทางเลือกซึ่งจะใช้ค่าเริ่มต้นหากมีการตั้งค่าสถานะเท่านั้นโดยไม่มีการระบุค่า แต่เก็บค่าที่ผู้ใช้ระบุแทนค่าเริ่มต้นหากผู้ใช้ระบุค่า มีการดำเนินการนี้หรือไม่ ตัวอย่าง: python script.py --example # args.example would equal a default value of 1 python script.py --example 2 # args.example would equal a default value of 2 ฉันสามารถสร้างการกระทำ แต่ต้องการดูว่ามีวิธีการที่มีอยู่หรือไม่

2
โมดูล argparse วิธีการเพิ่มตัวเลือกโดยไม่มีข้อโต้แย้งใด ๆ ?
argparseผมได้สร้างสคริปต์ใช้ สคริปต์จำเป็นต้องใช้ชื่อไฟล์การกำหนดค่าเป็นตัวเลือกและผู้ใช้สามารถระบุได้ว่าพวกเขาจำเป็นต้องดำเนินการสคริปต์ทั้งหมดหรือเพียงจำลอง args ที่จะส่งผ่าน: หรือ./script -f config_file -s./script -f config_file มันก็โอเคสำหรับส่วน -f config_file แต่มันขอให้ฉันหาข้อโต้แย้งสำหรับ -s ซึ่งเป็น optionnal และไม่ควรตามมาด้วย ฉันได้ลองสิ่งนี้แล้ว: parser = argparse.ArgumentParser() parser.add_argument('-f', '--file') #parser.add_argument('-s', '--simulate', nargs = '0') args = parser.parse_args() if args.file: config_file = args.file if args.set_in_prod: simulate = True else: pass ด้วยข้อผิดพลาดดังต่อไปนี้: File "/usr/local/lib/python2.6/dist-packages/argparse.py", line 2169, in …
165 python  argparse 

5
ใน Python การใช้ argparse อนุญาตเฉพาะจำนวนเต็มบวกเท่านั้น
ชื่อค่อนข้างจะสรุปสิ่งที่ฉันต้องการให้เกิดขึ้น นี่คือสิ่งที่ฉันมีและในขณะที่โปรแกรมไม่ระเบิดจำนวนเต็ม nonpositive ฉันต้องการให้ผู้ใช้ทราบว่าจำนวนเต็มที่ไม่ใช่เชิงลบนั้นเป็นเรื่องไร้สาระ import argparse parser = argparse.ArgumentParser() parser.add_argument("-g", "--games", type=int, default=162, help="The number of games to simulate") args = parser.parse_args() และผลลัพธ์: python simulate_many.py -g 20 Setting up... Playing games... .................... เอาต์พุตที่มีค่าลบ: python simulate_many.py -g -2 Setting up... Playing games... ตอนนี้เห็นได้ชัดว่าฉันสามารถเพิ่มถ้าเพื่อตรวจสอบว่าif args.gamesเป็นเชิงลบ แต่ฉันอยากรู้ว่ามีวิธีที่จะดักมันในargparseระดับเพื่อใช้ประโยชน์จากการพิมพ์การใช้งานอัตโนมัติ เป็นการดีที่มันจะพิมพ์สิ่งที่คล้ายกับนี้: python simulate_many.py -g a usage: …
164 python  argparse 

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.