14/08/2018, 12:04

Tham số dòng lệnh trong Python

Python cung cấp getopt Module giúp bạn phân tích cú pháp các tùy chọn và tham số dòng lệnh. $ python test.py arg1 arg2 arg3 sys Module trong Python cung cấp sự truy cập tới bất kỳ tham số dòng lệnh nào thông qua sys.argv . Phục vụ hai mục đích: Ví dụ Ví dụ import ...

Python cung cấp getopt Module giúp bạn phân tích cú pháp các tùy chọn và tham số dòng lệnh.

$ python test.py arg1 arg2 arg3

sys Module trong Python cung cấp sự truy cập tới bất kỳ tham số dòng lệnh nào thông qua sys.argv. Phục vụ hai mục đích:

Ví dụ

Ví dụ

 

import sys

print 'So tham so:', len(sys.argv), 'tham so.'
print 'Danh sach tham so:', str(sys.argv)

Bây giờ chạy script trên như sau:

$ python test.py arg1 arg2 arg3

Kết quả là:

So tham so: 4 tham so.
Danh sach tham so: ['test.py', 'arg1', 'arg2', 'arg3']

Ghi chú: tham số đầu tiên luôn luôn là tên script và nó cũng được đếm trong số tham số.

Parse các tham số dòng lệnh trong Python

Python cung cấp getopt Module giúp bạn phân tích cú pháp các tùy chọn và tham số dòng lệnh. Module này cung cấp hai hàm và một exception để kích hoạt việc phân tích cú pháp các tham số dòng lệnh.

Phương thức getopt.getopt trong Python

Phương thức này phân tích cú pháp danh sách tham số và các tùy chọn tham số dòng lệnh Cú pháp là:

getopt.getopt(args, option, [long_option])

Chi tiết về tham số:

getopt.GetoptError trong Python

Đây là một exception và nó được tạo khi thấy một tùy chọn không được nhận ra trong danh sách tham số hoặc khi một tùy chọn cần một tham số mà không cung cấp tham số nào.

Tham số cho exception là một chuỗi chỉ nguyên nhân gây ra lỗi. Các thuộc tính msgopt cung cấp thông điệp lỗi và tùy chọn có liên quan.

Ví dụ

Giả sử bạn muốn truyền hai tên file thông qua dòng lệnh và bạn cũng muốn cung cấp một tùy chọn để kiểm tra sự sử dụng của script. Usage của script là như sau:

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

Đây là script:

 

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 'Input file is "', inputfile
   print 'Output file is "', outputfile

if __name__ == "__main__":
   main(sys.argv[1:])

Bây giờ chạy script trên như sau:

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

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

$ test.py -i inputfile
Input file is " inputfile
Output file is "
0