Latest web development tutorials

งูหลามอาร์กิวเมนต์บรรทัดคำสั่ง

งูหลามอาร์กิวเมนต์บรรทัดคำสั่ง

งูหลามให้โมดูลgetopt จะได้รับอาร์กิวเมนต์บรรทัดคำสั่ง

$ python test.py arg1 arg2 arg3

งูใหญ่นอกจากนี้ยังสามารถนำมาใช้ในsys.argv SYS ที่จะได้รับอาร์กิวเมนต์บรรทัดคำสั่ง:

  • sys.argv เป็นรายการพารามิเตอร์บรรทัดคำสั่ง

  • len (sys.argv) คือจำนวนของการขัดแย้งบรรทัดคำสั่ง

หมายเหตุ: sys.argv [0] ระบุชื่อของสคริปต์

ตัวอย่าง

รหัสไฟล์ test.py เป็นดังนี้:

#!/usr/bin/python
# -*- coding: UTF-8 -*-

import sys

print '参数个数为:', len(sys.argv), '个参数。'
print '参数列表:', str(sys.argv)

การดำเนินงานของโค้ดข้างต้นผลลัพธ์คือ:

$ python 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/python
# -*- coding: UTF-8 -*-

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:])

การดำเนินงานของโค้ดข้างต้นผลลัพธ์คือ:

$ python test.py -h
usage: test.py -i <inputfile> -o <outputfile>

$ python test.py -i inputfile -o outputfile
输入的文件为: inputfile
输出的文件为: outputfile