Python3 บรรทัดคำสั่ง
Python3 บรรทัดคำสั่ง
งูหลามให้โมดูลgetopt จะได้รับอาร์กิวเมนต์บรรทัดคำสั่ง
$ python test.py arg1 arg2 arg3
งูใหญ่นอกจากนี้ยังสามารถนำมาใช้ในsys.argv SYS ที่จะได้รับอาร์กิวเมนต์บรรทัดคำสั่ง:
sys.argv เป็นรายการพารามิเตอร์บรรทัดคำสั่ง
len (sys.argv) คือจำนวนของการขัดแย้งบรรทัดคำสั่ง
หมายเหตุ: sys.argv [0] ระบุชื่อของสคริปต์
ตัวอย่าง
รหัสไฟล์ test.py เป็นดังนี้:
#!/usr/bin/python3 import sys print ('参数个数为:', len(sys.argv), '个参数。') print ('参数列表:', str(sys.argv))
การดำเนินงานของโค้ดข้างต้นผลลัพธ์คือ:
$ python3 test.py arg1 arg2 arg3 参数个数为: 4 个参数。 参数列表: ['test.py', 'arg1', 'arg2', 'arg3']
โมดูล getopt
โมดูล getopt จะทุ่มเทโมดูลการประมวลผลบรรทัดคำสั่งใช้เพื่อให้ได้ตัวเลือกบรรทัดคำสั่งและพารามิเตอร์เป็น sys.argv ตัวเลือกบรรทัดคำสั่งทำให้พารามิเตอร์ที่มีความยืดหยุ่นมากขึ้นโปรแกรม สนับสนุนโหมดตัวเลือกสั้น (-) และตัวเลือกโหมดยาว (-)
โมดูลมีสองวิธีการและการจัดการข้อยกเว้นที่จะแยกอาร์กิวเมนต์บรรทัดคำสั่ง
วิธี getopt.getopt
วิธีการ getopt.getopt สำหรับการแยกบรรทัดคำสั่งไวยากรณ์รายการพารามิเตอร์จะเป็นดังนี้:
getopt.getopt(args, options[, long_options])
พารามิเตอร์วิธีการ:
args: การแยกบรรทัดคำสั่งรายการอาร์กิวเมนต์
ตัวเลือก: ในการกำหนดรูปแบบของสตริงตัวเลือกลำไส้ใหญ่หลังจาก(:) แสดงให้เห็นว่าตัวเลือกนี้จะต้องมีพารามิเตอร์เพิ่มเติมโดยไม่ต้องลำไส้ใหญ่แสดงให้เห็นว่าตัวเลือกนี้ไม่พารามิเตอร์เพิ่มเติม
long_options: กำหนดรูปแบบของรายการ,long_options หลังเครื่องหมายเท่ากับ (=) กล่าวว่าถ้าตัวเลือกนี้มีการตั้งค่าจะต้องมีพารามิเตอร์เพิ่มเติมหรือไม่พารามิเตอร์เพิ่มเติม
วิธีการนี้จะส่งกลับค่าประกอบด้วยสององค์ประกอบ: ครั้งแรกที่เป็น(ตัวเลือกค่า) tuplesประการที่สองคือรายชื่อของพารามิเตอร์รวมทั้งผู้ที่ไม่ได้ '-' หรือ '-' พารามิเตอร์
อีกวิธีหนึ่งคือ getopt.gnu_getopt ไม่มากจะทำอย่างไรอธิบายไว้ที่นี่
getopt.GetoptError ข้อยกเว้น
ไม่พบในรายชื่อของพารามิเตอร์หรือตัวเลือกพารามิเตอร์ที่ต้องการก่อให้เกิดข้อยกเว้นที่ยังว่างอยู่
ข้อโต้แย้งข้อยกเว้นเป็นสตริงที่แสดงให้เห็นถึงข้อผิดพลาดเกิดข้อผิดพลาดตัวเลือกที่เกี่ยวข้องและเลือกใช้แอตทริบิวต์แบบ msg
ตัวอย่าง
สมมติว่าเราสร้างสคริปต์ดังกล่าวคุณสามารถส่งผ่านสองบรรทัดคำสั่งชื่อไฟล์ไฟล์สคริปต์ในขณะที่เราใช้ตัวเลือกอื่นเพื่อดูสคริปต์ ใช้สคริปต์ต่อไปนี้:
usage: test.py -i <inputfile> -o <outputfile>
รหัสไฟล์ test.py เป็นดังนี้:
#!/usr/bin/python3 import sys, getopt def main(argv): inputfile = '' outputfile = '' try: opts, args = getopt.getopt(argv,"hi:o:",["ifile=","ofile="]) except getopt.GetoptError: print ('test.py -i <inputfile> -o <outputfile>') sys.exit(2) for opt, arg in opts: if opt == '-h': print ('test.py -i <inputfile> -o <outputfile>') sys.exit() elif opt in ("-i", "--ifile"): inputfile = arg elif opt in ("-o", "--ofile"): outputfile = arg print ('输入的文件为:', inputfile) print ('输出的文件为:', outputfile) if __name__ == "__main__": main(sys.argv[1:])
การดำเนินงานของโค้ดข้างต้นผลลัพธ์คือ:
$ python3 test.py -h usage: test.py -i <inputfile> -o <outputfile> $ python3 test.py -i inputfile -o outputfile 输入的文件为: inputfile 输出的文件为: outputfile