Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Python

Tham số Dòng lệnh (Command Line) và Tham số Biến (Variable Arguments) trong Python


Tham số Dòng lệnh (Command Line Arguments)

Tham số dòng lệnh là các tham số đầu vào cho phép người dùng kích hoạt chương trình hoạt động theo một cách nhất định như: xuất thông tin bổ sung, đọc dữ liệu từ nguồn chỉ định, hoặc giải thích dữ liệu theo định dạng mong muốn.

Tham số Dòng lệnh Python

Python cung cấp nhiều tùy chọn để đọc tham số dòng lệnh. Các cách phổ biến nhất là:

  • Python sys.argv
  • Python getopt module
  • Python argparse module

Module sys của Python

Module sys lưu trữ các tham số dòng lệnh (CLA) vào một danh sách và để truy xuất, chúng ta dùng sys.argv. Đây là cách đơn giản để đọc tham số dòng lệnh dưới dạng chuỗi.

import sys
print(type(sys.argv))
print('Các tham số dòng lệnh là: ')
for i in sys.argv:
    print(i)

Khi chạy chương trình trên, kết quả sẽ giống như:

Kết quả

>python CommandLineOption.py H E L L O

The command line arguments are:
CommandLineOption.py
H
E
L
L
O

Module getopt của Python

Module getopt của Python phân tích chuỗi đối số như sys.argv và trả về chuỗi các cặp tùy chọn & đối số và chuỗi các đối số không phải tùy chọn.

Cú pháp

getopt.getopt(args, options, [long_options])

trong đó:

  • Args – Danh sách đối số cần phân tích
  • Options – Chuỗi các chữ cái tùy chọn mà script muốn nhận diện.
  • Long_options – Tham số tùy chọn, là danh sách chuỗi với tên các tùy chọn dài, cần được hỗ trợ.

Cú pháp tùy chọn của module getopt bao gồm:

  • -a
  • -bval
  • -b val
  • --noarg
  • --witharg=val
  • --witharg val

Hãy hiểu module getopt qua ví dụ:

Dạng tùy chọn ngắn (Short form options)

Chương trình dưới nhận hai tùy chọn, -a và -b với tùy chọn thứ hai yêu cầu một đối số.

import getopt
print(getopt.getopt(['-a', '-bval', '-c', 'val'], 'ab:c:'))

Kết quả

([('-a', ''), ('-b', 'val'), ('-c', 'val')], [])

Dạng tùy chọn dài (Long form option)

Chương trình nhận hai tùy chọn, --noarg và --witharg và chuỗi nên là ['noarg', 'witharg=']

import getopt
print(getopt.getopt(['--noarg', '--witharg', 'val', '--witharg2=another'], '', ['noarg', 'witharg=', 'witharg2=']))

Kết quả

([('--noarg', ''), ('--witharg', 'val'), ('--witharg2', 'another')], [])

Ví dụ khác minh họa việc dùng getopt module:

import getopt
import sys
argv = sys.argv[1:]
try:
    opts, args = getopt.getopt(argv, 'hm:d', ['help', 'my_file='])
    print(opts)
    print(args)
except getopt.GetoptError:
    print('Something Wrong!')
    sys.exit(2)

Kết quả

>python CommandLineOption.py -m 2 -h "Help" H E L L O
[('-m', '2'), ('-h', '')]
['Help', 'H', 'E', 'L', 'L', 'O']

Module argparse của Python

Module argparse của Python là cách ưu tiên để phân tích tham số dòng lệnh. Module này cung cấp nhiều tùy chọn như positional arguments, giá trị mặc định cho đối số, thông báo help, chỉ định kiểu dữ liệu của đối số, v.v.

Dưới đây là chương trình đơn giản để hiểu module argparse:

import argparse
parser = argparse.ArgumentParser()
parser.add_argument("string", help="Print the word in upper case letters")
args = parser.parse_args()
print(args.string.upper())  # Cách này đối số có thể được thao tác.

Kết quả

>python CommandLineOption.py "Hello, pythoN"
HELLO, PYTHON

Chúng ta có thể đặt tùy chọn đối số với argparse module như --verbosity.