Đã đăng vào thg 3 8, 2019 4:22 SA 0 phút đọc 0 phút đọc
Parsing aguments từ command line dễ ẹc.
#!/urs/bin/env python 3
from argparse import ArgumentParser
def runner[testsuite]:
print ['OK OK! Minh Se Chay Test Suite {} Cho Ban'.format[testsuite]]
def main[]:
argparser = ArgumentParser['test_manager.py -ts test_suite']
argparser.add_argument['-ts', '--test_suite', default=None, help='Ban nho nhap ten test_suite ']
args = argparser.parse_args[]
test_suite_name = args.test_suite
runner[test_suite_name]
if __name__ == "__main__":
main[]
Sau khi chạy command line, output:
>test_manager.py -ts "SANITY_SUITE"
OK OK! Minh Se Chay Test Suite SANITY_SUITE Cho Ban
>test_manager.py -ts "REGRESSION_SUITE"
OK OK! Minh Se Chay Test Suite REGRESSION_SUITE Cho Ban
Chạy sai thì nó nhắc lệnh, khỏi lo:
>test_manager.py -abc
usage: test_manager.py -ts test_suite [-h] [-ts TEST_SUITE]
test_manager.py -ts test_suite: error: unrecognized arguments: -abc
>test_manager.py -h
usage: test_manager.py -ts test_suite [-h] [-ts TEST_SUITE]
optional arguments:
-h, --help show this help message and exit
-ts TEST_SUITE, --test_suite TEST_SUITE
Ban nho nhap ten test_suite
Chúc các bạn thành công !
All rights reserved
Xin chào các bạn. Hôm nay mình xin phép giới thiệu
1. Đây là một thư viện có sẵn và sẽ sẽ giúp bạn viết CLI [Command Line Interface] trong Python một cách rất dễ dàng.>test_manager.py -ts "SANITY_SUITE"
OK OK! Minh Se Chay Test Suite SANITY_SUITE Cho Ban
>test_manager.py -ts "REGRESSION_SUITE"
OK OK! Minh Se Chay Test Suite REGRESSION_SUITE Cho Ban
Trước tiên, nếu bạn chưa biết CLI là gì, bạn có thể đọc qua tại đây. Đại khái có thể hiểu nó là môi trường mà bạn tương tác với máy tính qua lệnh [Command Line].
1. Argparse để làm gì.
>test_manager.py -ts "SANITY_SUITE"
OK OK! Minh Se Chay Test Suite SANITY_SUITE Cho Ban
>test_manager.py -ts "REGRESSION_SUITE"
OK OK! Minh Se Chay Test Suite REGRESSION_SUITE Cho Ban
1 là một thư viện có sẵn trong Python dùng để viết CLI. Khi viết, chương trình của bạn sẽ định nghĩa các tham số cần thiết và >test_manager.py -ts "SANITY_SUITE"
OK OK! Minh Se Chay Test Suite SANITY_SUITE Cho Ban
>test_manager.py -ts "REGRESSION_SUITE"
OK OK! Minh Se Chay Test Suite REGRESSION_SUITE Cho Ban
1 sẽ tìm cách truyền các tham số đó từ >test_manager.py -ts "SANITY_SUITE"
OK OK! Minh Se Chay Test Suite SANITY_SUITE Cho Ban
>test_manager.py -ts "REGRESSION_SUITE"
OK OK! Minh Se Chay Test Suite REGRESSION_SUITE Cho Ban
4.Ví dụ, bạn viết 1 phần mềm chuyên dùng để tính toán phức tạp, và bạn viết nó dưới dạng CLI. Người dùng sẽ chạy phần mềm này qua Terminal mà không cần đến giao diện đồ họa [không nút bấm, không cửa sổ].
Ví dụ chương trình của bạn tên là được chứa trong file tên là
>test_manager.py -ts "SANITY_SUITE"
OK OK! Minh Se Chay Test Suite SANITY_SUITE Cho Ban
>test_manager.py -ts "REGRESSION_SUITE"
OK OK! Minh Se Chay Test Suite REGRESSION_SUITE Cho Ban
5. Vậy người dùng có thể chạy và hiển thị kết quả.python foo.py arg1 arg2 arg3
result
2. Dùng argparse như thế nào.
Chúng ta sẽ bắt đầu với 1 ví dụ được lấy trực tiếp từ doc của thư viện này.
import argparse
parser = argparse.ArgumentParser[description='Process some integers.']
parser.add_argument['integers', metavar='N', type=int, nargs='+',
help='an integer for the accumulator']
parser.add_argument['--sum', dest='accumulate', action='store_const',
const=sum, default=max,
help='sum the integers [default: find the max]']
args = parser.parse_args[]
print[args.accumulate[args.integers]]
Bạn lấy code này rồi chạy trong Terminal, kết quả sẽ như sau.
usage: prog.py [-h] [--sum] N [N ...]
Process some integers.
positional arguments:
N an integer for the accumulator
optional arguments:
-h, --help show this help message and exit
--sum sum the integers [default: find the max]
Mình sẽ giải thích từng phần như sau:
1.
>test_manager.py -ts "SANITY_SUITE"
OK OK! Minh Se Chay Test Suite SANITY_SUITE Cho Ban
>test_manager.py -ts "REGRESSION_SUITE"
OK OK! Minh Se Chay Test Suite REGRESSION_SUITE Cho Ban
6Bước này không có gì khó hiểu nếu bạn quen với Python hay một số ngôn ngữ khác cú pháp tương tự. Ở đây chúng ta đang
>test_manager.py -ts "SANITY_SUITE"
OK OK! Minh Se Chay Test Suite SANITY_SUITE Cho Ban
>test_manager.py -ts "REGRESSION_SUITE"
OK OK! Minh Se Chay Test Suite REGRESSION_SUITE Cho Ban
7 , tức đang gọi code từ module >test_manager.py -ts "SANITY_SUITE"
OK OK! Minh Se Chay Test Suite SANITY_SUITE Cho Ban
>test_manager.py -ts "REGRESSION_SUITE"
OK OK! Minh Se Chay Test Suite REGRESSION_SUITE Cho Ban
1 sang phiên làm việc hiện tại.2.
parser = argparse.ArgumentParser[description='Process some integers.']
Ở đây, chúng ta đang tạo ra 1 biến là
>test_manager.py -ts "SANITY_SUITE"
OK OK! Minh Se Chay Test Suite SANITY_SUITE Cho Ban
>test_manager.py -ts "REGRESSION_SUITE"
OK OK! Minh Se Chay Test Suite REGRESSION_SUITE Cho Ban
9. phần >test_manager.py -abc
usage: test_manager.py -ts test_suite [-h] [-ts TEST_SUITE]
test_manager.py -ts test_suite: error: unrecognized arguments: -abc
>test_manager.py -h
usage: test_manager.py -ts test_suite [-h] [-ts TEST_SUITE]
optional arguments:
-h, --help show this help message and exit
-ts TEST_SUITE, --test_suite TEST_SUITE
Ban nho nhap ten test_suite
0 sẽ trả về một object, hay một đối tượng. Từ bước này trở đi biến parser sẽ lưu giữ các thông tin cần thiết để truyền các biến từ CLI vào chương trình Python. Tham số >test_manager.py -abc
usage: test_manager.py -ts test_suite [-h] [-ts TEST_SUITE]
test_manager.py -ts test_suite: error: unrecognized arguments: -abc
>test_manager.py -h
usage: test_manager.py -ts test_suite [-h] [-ts TEST_SUITE]
optional arguments:
-h, --help show this help message and exit
-ts TEST_SUITE, --test_suite TEST_SUITE
Ban nho nhap ten test_suite
1 được sử dụng để cung cấp thông tin mô tả chương trình của bạn. Ví dụ ở đây thì >test_manager.py -abc
usage: test_manager.py -ts test_suite [-h] [-ts TEST_SUITE]
test_manager.py -ts test_suite: error: unrecognized arguments: -abc
>test_manager.py -h
usage: test_manager.py -ts test_suite [-h] [-ts TEST_SUITE]
optional arguments:
-h, --help show this help message and exit
-ts TEST_SUITE, --test_suite TEST_SUITE
Ban nho nhap ten test_suite
2Ngoài
>test_manager.py -abc
usage: test_manager.py -ts test_suite [-h] [-ts TEST_SUITE]
test_manager.py -ts test_suite: error: unrecognized arguments: -abc
>test_manager.py -h
usage: test_manager.py -ts test_suite [-h] [-ts TEST_SUITE]
optional arguments:
-h, --help show this help message and exit
-ts TEST_SUITE, --test_suite TEST_SUITE
Ban nho nhap ten test_suite
1 thì ArgumentParrser còn một số các tham số khác như sau:
4 : Tên của chương trình [Mặc định>test_manager.py -abc usage: test_manager.py -ts test_suite [-h] [-ts TEST_SUITE] test_manager.py -ts test_suite: error: unrecognized arguments: -abc >test_manager.py -h usage: test_manager.py -ts test_suite [-h] [-ts TEST_SUITE] optional arguments: -h, --help show this help message and exit -ts TEST_SUITE, --test_suite TEST_SUITE Ban nho nhap ten test_suite
5, đây thường chính là tên file mà bạn lưu code. ]>test_manager.py -abc usage: test_manager.py -ts test_suite [-h] [-ts TEST_SUITE] test_manager.py -ts test_suite: error: unrecognized arguments: -abc >test_manager.py -h usage: test_manager.py -ts test_suite [-h] [-ts TEST_SUITE] optional arguments: -h, --help show this help message and exit -ts TEST_SUITE, --test_suite TEST_SUITE Ban nho nhap ten test_suite
6: Một chuỗi miêu tả cách sử dụng chương trình>test_manager.py -abc usage: test_manager.py -ts test_suite [-h] [-ts TEST_SUITE] test_manager.py -ts test_suite: error: unrecognized arguments: -abc >test_manager.py -h usage: test_manager.py -ts test_suite [-h] [-ts TEST_SUITE] optional arguments: -h, --help show this help message and exit -ts TEST_SUITE, --test_suite TEST_SUITE Ban nho nhap ten test_suite
7: Một class để tùy chỉnh phần thông tin trợ giúp>test_manager.py -abc usage: test_manager.py -ts test_suite [-h] [-ts TEST_SUITE] test_manager.py -ts test_suite: error: unrecognized arguments: -abc >test_manager.py -h usage: test_manager.py -ts test_suite [-h] [-ts TEST_SUITE] optional arguments: -h, --help show this help message and exit -ts TEST_SUITE, --test_suite TEST_SUITE Ban nho nhap ten test_suite
8 : Thêm cờ>test_manager.py -abc usage: test_manager.py -ts test_suite [-h] [-ts TEST_SUITE] test_manager.py -ts test_suite: error: unrecognized arguments: -abc >test_manager.py -h usage: test_manager.py -ts test_suite [-h] [-ts TEST_SUITE] optional arguments: -h, --help show this help message and exit -ts TEST_SUITE, --test_suite TEST_SUITE Ban nho nhap ten test_suite
9 cho chương trình để thiện phần thông tin trợ giúp>test_manager.py -abc usage: test_manager.py -ts test_suite [-h] [-ts TEST_SUITE] test_manager.py -ts test_suite: error: unrecognized arguments: -abc >test_manager.py -h usage: test_manager.py -ts test_suite [-h] [-ts TEST_SUITE] optional arguments: -h, --help show this help message and exit -ts TEST_SUITE, --test_suite TEST_SUITE Ban nho nhap ten test_suite
0: Các tham số mặc định truyền vàopython foo.py arg1 arg2 arg3 result
3.
parser.add_argument['integers', metavar='N', type=int, nargs='+',
help='an integer for the accumulator']
parser.add_argument['--sum', dest='accumulate', action='store_const',
const=sum, default=max,
help='sum the integers [default: find the max]']
Ở đây, trước hết
python foo.py arg1 arg2 arg3
result
1 định nghĩa cách mà các biến từ CLI sẽ được truyền vào Python. Mỗi lần gọi python foo.py arg1 arg2 arg3
result
1 sẽ xử lý một tham số duy nhất.Ở vị trí đầu tiên [ở trong ví dụ là
python foo.py arg1 arg2 arg3
result
3 hoặc python foo.py arg1 arg2 arg3
result
4], đây có thể là tên hoặc một cờ bạn sẽ truyền vào.Các tham số còn lại có chức năng sau:
5: Tên của tham số khi được ghi trong các phần thông tin trợ giúp [ở trong ví dụ là các đoạnpython foo.py arg1 arg2 arg3 result
6 vàpython foo.py arg1 arg2 arg3 result
7python foo.py arg1 arg2 arg3 result
8 : Kiểu dữ liệu mà tham số truyền vào sẽ được ép thành [ở trong ví dụ là kiểupython foo.py arg1 arg2 arg3 result
9]python foo.py arg1 arg2 arg3 result
0: Phần thông tin trợ giúpimport argparse parser = argparse.ArgumentParser[description='Process some integers.'] parser.add_argument['integers', metavar='N', type=int, nargs='+', help='an integer for the accumulator'] parser.add_argument['--sum', dest='accumulate', action='store_const', const=sum, default=max, help='sum the integers [default: find the max]'] args = parser.parse_args[] print[args.accumulate[args.integers]]
1: Tên của thuộc tính mà sẽ được thêm vào biến được trả về bởiimport argparse parser = argparse.ArgumentParser[description='Process some integers.'] parser.add_argument['integers', metavar='N', type=int, nargs='+', help='an integer for the accumulator'] parser.add_argument['--sum', dest='accumulate', action='store_const', const=sum, default=max, help='sum the integers [default: find the max]'] args = parser.parse_args[] print[args.accumulate[args.integers]]
2.import argparse parser = argparse.ArgumentParser[description='Process some integers.'] parser.add_argument['integers', metavar='N', type=int, nargs='+', help='an integer for the accumulator'] parser.add_argument['--sum', dest='accumulate', action='store_const', const=sum, default=max, help='sum the integers [default: find the max]'] args = parser.parse_args[] print[args.accumulate[args.integers]]
1 ở trong ví dụ làimport argparse parser = argparse.ArgumentParser[description='Process some integers.'] parser.add_argument['integers', metavar='N', type=int, nargs='+', help='an integer for the accumulator'] parser.add_argument['--sum', dest='accumulate', action='store_const', const=sum, default=max, help='sum the integers [default: find the max]'] args = parser.parse_args[] print[args.accumulate[args.integers]]
4, và bạn có thể thấy thuộc tính này được gọi sau này.import argparse parser = argparse.ArgumentParser[description='Process some integers.'] parser.add_argument['integers', metavar='N', type=int, nargs='+', help='an integer for the accumulator'] parser.add_argument['--sum', dest='accumulate', action='store_const', const=sum, default=max, help='sum the integers [default: find the max]'] args = parser.parse_args[] print[args.accumulate[args.integers]]
5: Một hằng giá trị , không được truyền vào từ CLI nhưng vẫn được lưu bên trong để 1 số hàm bên trong sử dụng, nhất là hàmimport argparse parser = argparse.ArgumentParser[description='Process some integers.'] parser.add_argument['integers', metavar='N', type=int, nargs='+', help='an integer for the accumulator'] parser.add_argument['--sum', dest='accumulate', action='store_const', const=sum, default=max, help='sum the integers [default: find the max]'] args = parser.parse_args[] print[args.accumulate[args.integers]]
6import argparse parser = argparse.ArgumentParser[description='Process some integers.'] parser.add_argument['integers', metavar='N', type=int, nargs='+', help='an integer for the accumulator'] parser.add_argument['--sum', dest='accumulate', action='store_const', const=sum, default=max, help='sum the integers [default: find the max]'] args = parser.parse_args[] print[args.accumulate[args.integers]]
7: Giá trị mặc định trả về nếu không có biến nào được truyền vào từ CLI.import argparse parser = argparse.ArgumentParser[description='Process some integers.'] parser.add_argument['integers', metavar='N', type=int, nargs='+', help='an integer for the accumulator'] parser.add_argument['--sum', dest='accumulate', action='store_const', const=sum, default=max, help='sum the integers [default: find the max]'] args = parser.parse_args[] print[args.accumulate[args.integers]]
Trong hàm add_argument, có 2 tham số đặc biệt cần lưu ý là
import argparse
parser = argparse.ArgumentParser[description='Process some integers.']
parser.add_argument['integers', metavar='N', type=int, nargs='+',
help='an integer for the accumulator']
parser.add_argument['--sum', dest='accumulate', action='store_const',
const=sum, default=max,
help='sum the integers [default: find the max]']
args = parser.parse_args[]
print[args.accumulate[args.integers]]
8 và import argparse
parser = argparse.ArgumentParser[description='Process some integers.']
parser.add_argument['integers', metavar='N', type=int, nargs='+',
help='an integer for the accumulator']
parser.add_argument['--sum', dest='accumulate', action='store_const',
const=sum, default=max,
help='sum the integers [default: find the max]']
args = parser.parse_args[]
print[args.accumulate[args.integers]]
6import argparse
parser = argparse.ArgumentParser[description='Process some integers.']
parser.add_argument['integers', metavar='N', type=int, nargs='+',
help='an integer for the accumulator']
parser.add_argument['--sum', dest='accumulate', action='store_const',
const=sum, default=max,
help='sum the integers [default: find the max]']
args = parser.parse_args[]
print[args.accumulate[args.integers]]
6: Mỗi tham số truyền vào CLI sẽ được lớp >test_manager.py -abc
usage: test_manager.py -ts test_suite [-h] [-ts TEST_SUITE]
test_manager.py -ts test_suite: error: unrecognized arguments: -abc
>test_manager.py -h
usage: test_manager.py -ts test_suite [-h] [-ts TEST_SUITE]
optional arguments:
-h, --help show this help message and exit
-ts TEST_SUITE, --test_suite TEST_SUITE
Ban nho nhap ten test_suite
0 đính với 1 import argparse
parser = argparse.ArgumentParser[description='Process some integers.']
parser.add_argument['integers', metavar='N', type=int, nargs='+',
help='an integer for the accumulator']
parser.add_argument['--sum', dest='accumulate', action='store_const',
const=sum, default=max,
help='sum the integers [default: find the max]']
args = parser.parse_args[]
print[args.accumulate[args.integers]]
6 , tức là một hành động duy nhất. Tham số này sẽ định nghĩa cách các tham số truyền vào từ CLI được xử lý. Hành động này có nhiều kiểu như sau:
3: hành động này sẽ lưu giá trị truyền vào. Đây là hành động mặc địnhusage: prog.py [-h] [--sum] N [N ...] Process some integers. positional arguments: N an integer for the accumulator optional arguments: -h, --help show this help message and exit --sum sum the integers [default: find the max]
4: hành động này sẽ lưu trữ giá trị được định nghĩa bởi từ khóausage: prog.py [-h] [--sum] N [N ...] Process some integers. positional arguments: N an integer for the accumulator optional arguments: -h, --help show this help message and exit --sum sum the integers [default: find the max]
5. Như ở ví dụ trên,import argparse parser = argparse.ArgumentParser[description='Process some integers.'] parser.add_argument['integers', metavar='N', type=int, nargs='+', help='an integer for the accumulator'] parser.add_argument['--sum', dest='accumulate', action='store_const', const=sum, default=max, help='sum the integers [default: find the max]'] args = parser.parse_args[] print[args.accumulate[args.integers]]
5 đang truyền vào hàmimport argparse parser = argparse.ArgumentParser[description='Process some integers.'] parser.add_argument['integers', metavar='N', type=int, nargs='+', help='an integer for the accumulator'] parser.add_argument['--sum', dest='accumulate', action='store_const', const=sum, default=max, help='sum the integers [default: find the max]'] args = parser.parse_args[] print[args.accumulate[args.integers]]
7. Biến này thường được dùng với các tham số dạng cờ. Ví dụ:usage: prog.py [-h] [--sum] N [N ...] Process some integers. positional arguments: N an integer for the accumulator optional arguments: -h, --help show this help message and exit --sum sum the integers [default: find the max]
>>> parser = argparse.ArgumentParser[]
>>> parser.add_argument['--foo', action='store_const', const=42]
>>> parser.parse_args[['--foo']]
Namespace[foo=42]
8 vàusage: prog.py [-h] [--sum] N [N ...] Process some integers. positional arguments: N an integer for the accumulator optional arguments: -h, --help show this help message and exit --sum sum the integers [default: find the max]
9 : đây là dạng đặc biệt của actionusage: prog.py [-h] [--sum] N [N ...] Process some integers. positional arguments: N an integer for the accumulator optional arguments: -h, --help show this help message and exit --sum sum the integers [default: find the max]
4, chuyên dùng để lưu các biếnusage: prog.py [-h] [--sum] N [N ...] Process some integers. positional arguments: N an integer for the accumulator optional arguments: -h, --help show this help message and exit --sum sum the integers [default: find the max]
1 vàparser = argparse.ArgumentParser[description='Process some integers.']
2, và đồng thời tạo các giá trị mặc địnhparser = argparse.ArgumentParser[description='Process some integers.']
2 vàparser = argparse.ArgumentParser[description='Process some integers.']
1.parser = argparse.ArgumentParser[description='Process some integers.']
5: Đếm số lần mộtparser = argparse.ArgumentParser[description='Process some integers.']
6 xảy raparser = argparse.ArgumentParser[description='Process some integers.']
7: Lưu 1parser = argparse.ArgumentParser[description='Process some integers.']
8, thêm các tham số truyền vào sau vàoparser = argparse.ArgumentParser[description='Process some integers.']
8 đó.parser = argparse.ArgumentParser[description='Process some integers.']
import argparse
parser = argparse.ArgumentParser[description='Process some integers.']
parser.add_argument['integers', metavar='N', type=int, nargs='+',
help='an integer for the accumulator']
parser.add_argument['--sum', dest='accumulate', action='store_const',
const=sum, default=max,
help='sum the integers [default: find the max]']
args = parser.parse_args[]
print[args.accumulate[args.integers]]
8: Như đã nói ở trên thì mỗi tham số truyền vào CLI sẽ được lớp >test_manager.py -abc
usage: test_manager.py -ts test_suite [-h] [-ts TEST_SUITE]
test_manager.py -ts test_suite: error: unrecognized arguments: -abc
>test_manager.py -h
usage: test_manager.py -ts test_suite [-h] [-ts TEST_SUITE]
optional arguments:
-h, --help show this help message and exit
-ts TEST_SUITE, --test_suite TEST_SUITE
Ban nho nhap ten test_suite
0 đính với 1 import argparse
parser = argparse.ArgumentParser[description='Process some integers.']
parser.add_argument['integers', metavar='N', type=int, nargs='+',
help='an integer for the accumulator']
parser.add_argument['--sum', dest='accumulate', action='store_const',
const=sum, default=max,
help='sum the integers [default: find the max]']
args = parser.parse_args[]
print[args.accumulate[args.integers]]
6 Tham số import argparse
parser = argparse.ArgumentParser[description='Process some integers.']
parser.add_argument['integers', metavar='N', type=int, nargs='+',
help='an integer for the accumulator']
parser.add_argument['--sum', dest='accumulate', action='store_const',
const=sum, default=max,
help='sum the integers [default: find the max]']
args = parser.parse_args[]
print[args.accumulate[args.integers]]
8 có thể đính một số lượng các tham số khác nhau với 1 import argparse
parser = argparse.ArgumentParser[description='Process some integers.']
parser.add_argument['integers', metavar='N', type=int, nargs='+',
help='an integer for the accumulator']
parser.add_argument['--sum', dest='accumulate', action='store_const',
const=sum, default=max,
help='sum the integers [default: find the max]']
args = parser.parse_args[]
print[args.accumulate[args.integers]]
6. Các giá trị của import argparse
parser = argparse.ArgumentParser[description='Process some integers.']
parser.add_argument['integers', metavar='N', type=int, nargs='+',
help='an integer for the accumulator']
parser.add_argument['--sum', dest='accumulate', action='store_const',
const=sum, default=max,
help='sum the integers [default: find the max]']
args = parser.parse_args[]
print[args.accumulate[args.integers]]
8 như sau:
6: Tất cả các tham số truyền vào từ CLI được gom lại vào 1parser.add_argument['integers', metavar='N', type=int, nargs='+', help='an integer for the accumulator'] parser.add_argument['--sum', dest='accumulate', action='store_const', const=sum, default=max, help='sum the integers [default: find the max]']
8parser = argparse.ArgumentParser[description='Process some integers.']
8: Giống nhưparser.add_argument['integers', metavar='N', type=int, nargs='+', help='an integer for the accumulator'] parser.add_argument['--sum', dest='accumulate', action='store_const', const=sum, default=max, help='sum the integers [default: find the max]']
6. Nhưng sẽ trả ra 1 tin nhắn lỗi nếu không có tham số nào được truyền vào. Đây là giá trị được sử dụng ở ví dụ.parser.add_argument['integers', metavar='N', type=int, nargs='+', help='an integer for the accumulator'] parser.add_argument['--sum', dest='accumulate', action='store_const', const=sum, default=max, help='sum the integers [default: find the max]']
0: Một số nguyên>>> parser = argparse.ArgumentParser[] >>> parser.add_argument['--foo', action='store_const', const=42] >>> parser.parse_args[['--foo']] Namespace[foo=42]
0 các tham số truyền vaò từ CLI sẽ được gom vào một>>> parser = argparse.ArgumentParser[] >>> parser.add_argument['--foo', action='store_const', const=42] >>> parser.parse_args[['--foo']] Namespace[foo=42]
8.parser = argparse.ArgumentParser[description='Process some integers.']
3: Sẽ chỉ có 1 tham số truyền vào từ CLI được xử lý. Nếu không có tham số nào thì giá trị từ tham số>>> parser = argparse.ArgumentParser[] >>> parser.add_argument['--foo', action='store_const', const=42] >>> parser.parse_args[['--foo']] Namespace[foo=42]
7 sẽ được sử dụng.import argparse parser = argparse.ArgumentParser[description='Process some integers.'] parser.add_argument['integers', metavar='N', type=int, nargs='+', help='an integer for the accumulator'] parser.add_argument['--sum', dest='accumulate', action='store_const', const=sum, default=max, help='sum the integers [default: find the max]'] args = parser.parse_args[] print[args.accumulate[args.integers]]
4.
>>> parser = argparse.ArgumentParser[]
>>> parser.add_argument['--foo', action='store_const', const=42]
>>> parser.parse_args[['--foo']]
Namespace[foo=42]
5Hàm
import argparse
parser = argparse.ArgumentParser[description='Process some integers.']
parser.add_argument['integers', metavar='N', type=int, nargs='+',
help='an integer for the accumulator']
parser.add_argument['--sum', dest='accumulate', action='store_const',
const=sum, default=max,
help='sum the integers [default: find the max]']
args = parser.parse_args[]
print[args.accumulate[args.integers]]
2 biến các tham số được gửi vào từ CLI thành các thuộc tính của 1 object và trả về object đó. Như vậy có thể thấy trong ví dụ ở bên trên, >>> parser = argparse.ArgumentParser[]
>>> parser.add_argument['--foo', action='store_const', const=42]
>>> parser.parse_args[['--foo']]
Namespace[foo=42]
7 sẽ là một object chứa các biến được truyền vào như >>> parser = argparse.ArgumentParser[]
>>> parser.add_argument['--foo', action='store_const', const=42]
>>> parser.parse_args[['--foo']]
Namespace[foo=42]
8 và import argparse
parser = argparse.ArgumentParser[description='Process some integers.']
parser.add_argument['integers', metavar='N', type=int, nargs='+',
help='an integer for the accumulator']
parser.add_argument['--sum', dest='accumulate', action='store_const',
const=sum, default=max,
help='sum the integers [default: find the max]']
args = parser.parse_args[]
print[args.accumulate[args.integers]]
4. Sau đó hàm parser.add_argument['integers', metavar='N', type=int, nargs='+',
help='an integer for the accumulator']
0 in ra kết quả trả về khi gọi hàm import argparse
parser = argparse.ArgumentParser[description='Process some integers.']
parser.add_argument['integers', metavar='N', type=int, nargs='+',
help='an integer for the accumulator']
parser.add_argument['--sum', dest='accumulate', action='store_const',
const=sum, default=max,
help='sum the integers [default: find the max]']
args = parser.parse_args[]
print[args.accumulate[args.integers]]
4 với biến python foo.py arg1 arg2 arg3
result
3. Mình xin phép tổng kết lại các bước và phân tích ví dụ trực tiếp như sau.Bước 1: Tạo 1 parser từ
parser.add_argument['integers', metavar='N', type=int, nargs='+',
help='an integer for the accumulator']
3Bước 2: Thêm
parser.add_argument['integers', metavar='N', type=int, nargs='+',
help='an integer for the accumulator']
4 với hàm python foo.py arg1 arg2 arg3
result
1.- Dòng
parser.add_argument['integers', metavar='N', type=int, nargs='+',
help='an integer for the accumulator']
Thêm tham số integers, là một
parser = argparse.ArgumentParser[description='Process some integers.']
8 của tất cả các số truyền vào từ CLI, kiểu số bắt buộc là số nguyên.- Dòng
>test_manager.py -ts "SANITY_SUITE"
OK OK! Minh Se Chay Test Suite SANITY_SUITE Cho Ban
>test_manager.py -ts "REGRESSION_SUITE"
OK OK! Minh Se Chay Test Suite REGRESSION_SUITE Cho Ban
0Thêm tham số
python foo.py arg1 arg2 arg3
result
4, được lưu vào thuộc tính import argparse
parser = argparse.ArgumentParser[description='Process some integers.']
parser.add_argument['integers', metavar='N', type=int, nargs='+',
help='an integer for the accumulator']
parser.add_argument['--sum', dest='accumulate', action='store_const',
const=sum, default=max,
help='sum the integers [default: find the max]']
args = parser.parse_args[]
print[args.accumulate[args.integers]]
4, được dùng để tạo ra 1 hàm trả về tổng của các tham số truyền vào, hoặc nếu không có tham số python foo.py arg1 arg2 arg3
result
4 được truyền vào sẽ mặc định trả về giá trị lớn nhất.Bước 3: Các tham số trên được biến đổi thành thuộc tính của một object.
Bước 4: In ra kết quả khi áp dùng hàm
>test_manager.py -ts "SANITY_SUITE"
OK OK! Minh Se Chay Test Suite SANITY_SUITE Cho Ban
>test_manager.py -ts "REGRESSION_SUITE"
OK OK! Minh Se Chay Test Suite REGRESSION_SUITE Cho Ban
00 với list python foo.py arg1 arg2 arg3
result
3.Đó là các bước để viết 1 chương trình CLI trong Python. Mình mong các bạn học được nhiều từ Tutorial này. Nếu muốn đọc thêm bạn có thể tham khảo ở đây. Xin cảm ơn vì đã đọc.