Computer >> Máy Tính >  >> Lập trình >> Python

Trình phân tích cú pháp kiểu C cho các tùy chọn dòng lệnh trong Python

Mô-đun sys của Python cung cấp quyền truy cập vào bất kỳ đối số dòng lệnh nào thông qua sys.argv. sys.argv là danh sách các đối số dòng lệnh và sys.argv [0] là chương trình. tên tập lệnh.

Lưu mã sau dưới dạng args.py

import sys
print ('argument list', sys.argv)

Thực thi tập lệnh trên từ dòng lệnh như sau:

C:\python37>python args.py 11 22
argument list ['args.py', '11', '22']

Mô-đun getopt có các hàm hàm tổng hợp các đối số dòng lệnh trong sys.argv. Nó hỗ trợ các quy ước tương tự như hàm Unix getopt () (bao gồm các ý nghĩa đặc biệt của các đối số có dạng ‘-‘ và ‘-‘).

API được thiết kế để quen thuộc với người dùng hàm C getopt ().

getopt (args, shortopts, longopts =[])

Phân tích cú pháp các tùy chọn dòng lệnh và danh sách tham số. args là danh sách đối số loại trừ sys.argv [0], là tham chiếu hàng đầu đến chương trình đang chạy. Thông thường, điều này có nghĩa là sys.argv [1:]. Các đối số cho hàm này như sau -

phím tắt: là chuỗi các ký tự tùy chọn sẽ được tập lệnh nhận dạng. Các tùy chọn yêu cầu đối số được theo sau bởi dấu hai chấm (':'; tức là cùng một định dạng mà Unix getopt () sử dụng).

Longopts: nếu được chỉ định, phải là danh sách các chuỗi với tên của các tùy chọn dài cần được hỗ trợ. Các ký tự '-' đứng đầu không được bao gồm trong tên tùy chọn. Các tùy chọn dài yêu cầu đối số phải được theo sau bằng dấu bằng ('=').

Giá trị trả về bao gồm hai phần tử:phần tử đầu tiên là danh sách các cặp (tùy chọn, giá trị); thứ hai là danh sách các đối số của chương trình còn lại sau khi danh sách tùy chọn bị loại bỏ (đây là một đoạn args theo sau). Mỗi cặp option-và-value được trả về có tùy chọn là phần tử đầu tiên của nó, có tiền tố là dấu gạch ngang cho các tùy chọn ngắn (ví dụ:'-x') hoặc hai dấu gạch nối cho các tùy chọn dài (ví dụ:'--long-option') và đối số tùy chọn làm phần tử thứ hai của nó hoặc một chuỗi trống nếu tùy chọn không có đối số. Các tùy chọn xuất hiện trong danh sách theo cùng thứ tự mà chúng được tìm thấy, do đó cho phép nhiều lần xuất hiện. Các tùy chọn dài và ngắn có thể được kết hợp với nhau.

GetoptError xuất hiện khi tìm thấy tùy chọn không được công nhận trong danh sách đối số hoặc khi tùy chọn yêu cầu đối số không được cung cấp.

Ví dụ

import sys, getopt

args=sys.argv[1:]
inputfile = ''
outputfile = ''
try:
   opts, args = getopt.getopt(args,"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 ('args.py -i <inputfile> -o <outputfile>')
      sys.exit()
   elif opt in ("-i", "--ifile"):
      inputfile = arg
   elif opt in ("-o", "--ofile"):
      outputfile = arg
print ('Input file is "', inputfile)
print ('Output file is "', outputfile)

Đầu ra

C:\python37>python args.py -h
args.py -i <inputfile> -o <outputfile>
C:\python37>python args.py -i abc.txt -o xyz.txt
Input file is " abc.txt
Output file is " xyz.txt
C:\python37>python args.py --ifile=abc.txt --ofile=xyz.txt
Input file is " abc.txt
Output file is " xyz.txt