Đây là cách bạn có thể tham chiếu chức năng để gọi động [từ bảng ký hiệu cục bộ bằng cách sử dụng locals[]
]
import sys
def method1[value1, value2]:
print[value1]
def method2[value1, value2]:
print[value2]
def method_not_found[*args, **kwargs]:
print['[-] function not found']
if __name__ == "__main__":
locals[].get[sys.argv[3], 'method_not_found'][sys.argv[1], sys.argv[2]]
user@pc: python a.py 10 12 method1
10
user@pc: python a.py 10 12 method13
[-] function not found
Giải thích: Cách dòng: the way the line:
locals[].get[sys.argv[3], 'method_not_found'][sys.argv[1], sys.argv[2]]
Các tác phẩm là locals[]
Trả về một loại dict
và chúng tôi gọi phương thức .get[]
để tham khảo chức năng mà chúng tôi sẽ gọi [nếu không tìm thấy, thay vào đó, hãy nhận chức năng method_not_found
].
Sau đó, sau khi chúng tôi nhận được chức năng mà chúng tôi muốn gọi, chúng tôi thực hiện nó bằng cách truyền sys.argv[1], sys.argv[2]
làm đối số.
Để vượt qua các đối số dòng lệnh, chúng tôi thường xác định main [] với hai đối số: đối số thứ nhất là số lượng đối số dòng lệnh và thứ hai là danh sách các đối số dòng lệnh. Giá trị của ARGC nên không tiêu cực. Argv [đối số vector] là mảng của các con trỏ ký tự liệt kê tất cả các đối số.Command Line Arguments. Python provides various ways of dealing with these types of arguments. The three most common are:
- Sử dụng sys.argv
- Sử dụng mô -đun GetOpt
- Sử dụng mô -đun argparse
Sử dụng sys.argv
Mô -đun SYS cung cấp các chức năng và biến được sử dụng để thao tác các phần khác nhau của môi trường thời gian chạy Python. Mô -đun này cung cấp quyền truy cập vào một số biến được sử dụng hoặc duy trì bởi trình thông dịch và các chức năng tương tác mạnh mẽ với trình thông dịch. Một biến đó là sys.argv là cấu trúc danh sách đơn giản. Mục đích chính của nó là:
One such variable is sys.argv which is a simple list structure. It’s main purpose are:
- Nó là một danh sách các đối số dòng lệnh.
- Len [sys.argv] cung cấp số lượng đối số dòng lệnh.
- sys.argv [0] là tên của tập lệnh Python hiện tại. & nbsp; & nbsp;
Ví dụ: Hãy giả sử rằng có một tập lệnh Python để thêm hai số và các số được truyền dưới dạng đối số dòng lệnh. & NBSP; Let’s suppose there is a Python script for adding two numbers and the numbers are passed as
command-line arguments.
Python3
user@pc: python a.py 10 12 method1
10
0 user@pc: python a.py 10 12 method1
10
1user@pc: python a.py 10 12 method1
10
2user@pc: python a.py 10 12 method1
10
3 user@pc: python a.py 10 12 method1
10
4user@pc: python a.py 10 12 method1
10
5user@pc: python a.py 10 12 method1
10
6user@pc: python a.py 10 12 method1
10
7user@pc: python a.py 10 12 method1
10
8user@pc: python a.py 10 12 method1
10
9user@pc: python a.py 10 12 method1
10
6user@pc: python a.py 10 12 method1
10
7user@pc: python a.py 10 12 method13
[-] function not found
2user@pc: python a.py 10 12 method13
[-] function not found
3user@pc: python a.py 10 12 method13
[-] function not found
4user@pc: python a.py 10 12 method13
[-] function not found
5user@pc: python a.py 10 12 method1
10
6user@pc: python a.py 10 12 method1
10
7user@pc: python a.py 10 12 method13
[-] function not found
8user@pc: python a.py 10 12 method13
[-] function not found
9user@pc: python a.py 10 12 method1
10
3 locals[].get[sys.argv[3], 'method_not_found'][sys.argv[1], sys.argv[2]]
1locals[].get[sys.argv[3], 'method_not_found'][sys.argv[1], sys.argv[2]]
2locals[].get[sys.argv[3], 'method_not_found'][sys.argv[1], sys.argv[2]]
3 locals[].get[sys.argv[3], 'method_not_found'][sys.argv[1], sys.argv[2]]
4locals[].get[sys.argv[3], 'method_not_found'][sys.argv[1], sys.argv[2]]
5 locals[].get[sys.argv[3], 'method_not_found'][sys.argv[1], sys.argv[2]]
6user@pc: python a.py 10 12 method1
10
7locals[].get[sys.argv[3], 'method_not_found'][sys.argv[1], sys.argv[2]]
8locals[].get[sys.argv[3], 'method_not_found'][sys.argv[1], sys.argv[2]]
9locals[]
0
user@pc: python a.py 10 12 method1
10
6locals[]
2user@pc: python a.py 10 12 method1
10
3 locals[].get[sys.argv[3], 'method_not_found'][sys.argv[1], sys.argv[2]]
1locals[].get[sys.argv[3], 'method_not_found'][sys.argv[1], sys.argv[2]]
2locals[]
6
user@pc: python a.py 10 12 method1
10
3 user@pc: python a.py 10 12 method13
[-] function not found
4locals[].get[sys.argv[3], 'method_not_found'][sys.argv[1], sys.argv[2]]
3 locals[].get[sys.argv[3], 'method_not_found'][sys.argv[1], sys.argv[2]]
4locals[].get[sys.argv[3], 'method_not_found'][sys.argv[1], sys.argv[2]]
5 locals[].get[sys.argv[3], 'method_not_found'][sys.argv[1], sys.argv[2]]
6user@pc: python a.py 10 12 method1
10
7locals[].get[sys.argv[3], 'method_not_found'][sys.argv[1], sys.argv[2]]
8locals[].get[sys.argv[3], 'method_not_found'][sys.argv[1], sys.argv[2]]
9locals[]
0
user@pc: python a.py 10 12 method1
10
6locals[]
2user@pc: python a.py 10 12 method1
10
3 locals[].get[sys.argv[3], 'method_not_found'][sys.argv[1], sys.argv[2]]
1locals[].get[sys.argv[3], 'method_not_found'][sys.argv[1], sys.argv[2]]
2user@pc: python a.py 10 12 method1
10
6user@pc: python a.py 10 12 method1
10
7dict
4dict
5locals[]
6locals[].get[sys.argv[3], 'method_not_found'][sys.argv[1], sys.argv[2]]
2Output:
Sử dụng mô -đun GetOpt
Sử dụng mô -đun argparsegetopt module is similar to the
getopt[] function of C. Unlike sys module getopt module extends the separation of the input string by parameter validation. It allows both short, and long options including a value assignment. However, this module requires the use of the sys module to process input data properly. To use getopt module, it is required to remove the first element from the list of command-line
arguments.
Mô -đun SYS cung cấp các chức năng và biến được sử dụng để thao tác các phần khác nhau của môi trường thời gian chạy Python. Mô -đun này cung cấp quyền truy cập vào một số biến được sử dụng hoặc duy trì bởi trình thông dịch và các chức năng tương tác mạnh mẽ với trình thông dịch. Một biến đó là sys.argv là cấu trúc danh sách đơn giản. Mục đích chính của nó là: getopt.getopt[args, options, [long_options]]
Parameters:
args: List of arguments to be passed.
options: String of option letters that the script want to recognize. Options that require an argument should be followed by a colon [:].
long_options: List of string with the name of long options. Options that require arguments should be followed by an equal sign [=].
Return Type: Returns value consisting of two elements: the first is a list of [option, value] pairs. The second is the list of program arguments left after the option list was stripped.
Example:
Python3
Nó là một danh sách các đối số dòng lệnh.
Len [sys.argv] cung cấp số lượng đối số dòng lệnh.
sys.argv [0] là tên của tập lệnh Python hiện tại. & nbsp; & nbsp;
Ví dụ: Hãy giả sử rằng có một tập lệnh Python để thêm hai số và các số được truyền dưới dạng đối số dòng lệnh. & NBSP;
method_not_found
7method_not_found
8
user@pc: python a.py 10 12 method1
10
0 user@pc: python a.py 10 12 method1
10
1user@pc: python a.py 10 12 method1
10
2user@pc: python a.py 10 12 method1
10
3 user@pc: python a.py 10 12 method1
10
4user@pc: python a.py 10 12 method1
10
5user@pc: python a.py 10 12 method1
10
6user@pc: python a.py 10 12 method1
10
7user@pc: python a.py 10 12 method13
[-] function not found
8user@pc: python a.py 10 12 method13
[-] function not found
9user@pc: python a.py 10 12 method1
10
3 locals[].get[sys.argv[3], 'method_not_found'][sys.argv[1], sys.argv[2]]
1locals[].get[sys.argv[3], 'method_not_found'][sys.argv[1], sys.argv[2]]
2locals[].get[sys.argv[3], 'method_not_found'][sys.argv[1], sys.argv[2]]
3 locals[].get[sys.argv[3], 'method_not_found'][sys.argv[1], sys.argv[2]]
4locals[].get[sys.argv[3], 'method_not_found'][sys.argv[1], sys.argv[2]]
5 locals[].get[sys.argv[3], 'method_not_found'][sys.argv[1], sys.argv[2]]
6user@pc: python a.py 10 12 method1
10
7locals[].get[sys.argv[3], 'method_not_found'][sys.argv[1], sys.argv[2]]
8locals[].get[sys.argv[3], 'method_not_found'][sys.argv[1], sys.argv[2]]
9locals[]
0
user@pc: python a.py 10 12 method1
10
6locals[]
2user@pc: python a.py 10 12 method1
10
3 locals[].get[sys.argv[3], 'method_not_found'][sys.argv[1], sys.argv[2]]
1locals[].get[sys.argv[3], 'method_not_found'][sys.argv[1], sys.argv[2]]
2locals[]
6
user@pc: python a.py 10 12 method1
10
3 user@pc: python a.py 10 12 method13
[-] function not found
4locals[]
0locals[]
6 locals[]
8
user@pc: python a.py 10 12 method1
10
3 dict
0dict
1Mô -đun Python GetOpt tương tự như hàm getOpt [] của C. Không giống như mô -đun SYS Module GetOpt Mở rộng phân tách chuỗi đầu vào bằng xác thực tham số. Nó cho phép cả hai tùy chọn ngắn và dài bao gồm một gán giá trị. Tuy nhiên, mô -đun này yêu cầu sử dụng mô -đun SYS để xử lý dữ liệu đầu vào đúng cách. Để sử dụng mô-đun GetOpt, bắt buộc phải xóa phần tử đầu tiên khỏi danh sách các đối số dòng lệnh. & Nbsp; & nbsp;
Cú pháp: getOpt.getOpt [args, Tùy chọn, [long_options]] tham số: & nbsp; args: danh sách các đối số sẽ được truyền. & Nbsp; Tùy chọn: Chuỗi các chữ cái tùy chọn mà tập lệnh muốn nhận ra. Các tùy chọn yêu cầu một đối số phải được theo sau bởi một dấu hai chấm [:]. & Nbsp; long_options: Danh sách chuỗi có tên của các tùy chọn dài. Các tùy chọn yêu cầu đối số phải được theo sau bởi một dấu hiệu bằng nhau [=]. Loại trả về: Giá trị trả về bao gồm hai 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ố chương trình còn lại sau khi danh sách tùy chọn bị tước. & NBSP; & NBSP;
user@pc: python a.py 10 12 method1
10
0 dict
9Output:
Sử dụng mô -đun argparse
.get[]
0
user@pc: python a.py 10 12 method1
10
3 .get[]
2locals[].get[sys.argv[3], 'method_not_found'][sys.argv[1], sys.argv[2]]
8.get[]
4.get[]
5
3 user@pc: python a.py 10 12 method1
10
.get[]
7 As a default optional argument, it includes -h, along with its long version –help.
.get[]
8
3 user@pc: python a.py 10 12 method1
10
method_not_found
0method_not_found
1dict
5method_not_found
3dict
5method_not_found
5method_not_found
6 Basic use of argparse module.
Python3
locals[]
0sys.argv[1], sys.argv[2]
0
user@pc: python a.py 10 12 method1
10
3 sys.argv[1], sys.argv[2]
2locals[]
0
locals[].get[sys.argv[3], 'method_not_found'][sys.argv[1], sys.argv[2]]
3 sys.argv[1], sys.argv[2]
5locals[].get[sys.argv[3], 'method_not_found'][sys.argv[1], sys.argv[2]]
5 sys.argv[1], sys.argv[2]
7user@pc: python a.py 10 12 method1
10
56
Output:
sys.argv[1], sys.argv[2]
8sys.argv[1], sys.argv[2]
9
user@pc: python a.py 10 12 method1
10
00locals[].get[sys.argv[3], 'method_not_found'][sys.argv[1], sys.argv[2]]
5 user@pc: python a.py 10 12 method1
10
7user@pc: python a.py 10 12 method1
10
03dict
5____1055user@pc: python a.py 10 12 method1
10
06Example 2: Adding description to the help message.
Python3
locals[]
0sys.argv[1], sys.argv[2]
0
user@pc: python a.py 10 12 method1
10
3 sys.argv[1], sys.argv[2]
2locals[]
0
locals[].get[sys.argv[3], 'method_not_found'][sys.argv[1], sys.argv[2]]
3 sys.argv[1], sys.argv[2]
5locals[].get[sys.argv[3], 'method_not_found'][sys.argv[1], sys.argv[2]]
5 sys.argv[1], sys.argv[2]
7sys.argv[1], sys.argv[2]
8sys.argv[1], sys.argv[2]
9
user@pc: python a.py 10 12 method1
10
00locals[].get[sys.argv[3], 'method_not_found'][sys.argv[1], sys.argv[2]]
5 user@pc: python a.py 10 12 method1
10
7user@pc: python a.py 10 12 method1
10
03dict
5____1055user@pc: python a.py 10 12 method1
10
06user@pc: python a.py 10 12 method1
10
56
07user@pc: python a.py 10 12 method1
10
6 user@pc: python a.py 10 12 method1
10
7user@pc: python a.py 10 12 method1
10
10user@pc: python a.py 10 12 method1
10
2locals[].get[sys.argv[3], 'method_not_found'][sys.argv[1], sys.argv[2]]
sys.argv[1], sys.argv[2]
8
user@pc: python a.py 10 12 method1
10
13 user@pc: python a.py 10 12 method1
10
00locals[].get[sys.argv[3], 'method_not_found'][sys.argv[1], sys.argv[2]]
5 user@pc: python a.py 10 12 method1
10
7user@pc: python a.py 10 12 method1
10
17dict
5user@pc: python a.py 10 12 method1
10
19user@pc: python a.py 10 12 method1
10
06Example 3: Defining optional value
Python3
locals[]
0sys.argv[1], sys.argv[2]
0
user@pc: python a.py 10 12 method1
10
3 sys.argv[1], sys.argv[2]
2locals[]
0
locals[].get[sys.argv[3], 'method_not_found'][sys.argv[1], sys.argv[2]]
3 sys.argv[1], sys.argv[2]
5locals[].get[sys.argv[3], 'method_not_found'][sys.argv[1], sys.argv[2]]
5 sys.argv[1], sys.argv[2]
7sys.argv[1], sys.argv[2]
8sys.argv[1], sys.argv[2]
9
user@pc: python a.py 10 12 method1
10
00locals[].get[sys.argv[3], 'method_not_found'][sys.argv[1], sys.argv[2]]
5 user@pc: python a.py 10 12 method1
10
7user@pc: python a.py 10 12 method1
10
03dict
5____1055user@pc: python a.py 10 12 method1
10
06user@pc: python a.py 10 12 method1
10
07user@pc: python a.py 10 12 method1
10
6 user@pc: python a.py 10 12 method1
10
7user@pc: python a.py 10 12 method1
10
10locals[].get[sys.argv[3], 'method_not_found'][sys.argv[1], sys.argv[2]]
2sys.argv[1], sys.argv[2]
8
user@pc: python a.py 10 12 method1
10
13 user@pc: python a.py 10 12 method1
10
00locals[].get[sys.argv[3], 'method_not_found'][sys.argv[1], sys.argv[2]]
5 user@pc: python a.py 10 12 method1
10
7user@pc: python a.py 10 12 method1
10
17dict
5user@pc: python a.py 10 12 method1
10
19user@pc: python a.py 10 12 method1
10
06user@pc: python a.py 10 12 method1
10
07user@pc: python a.py 10 12 method1
10
6 user@pc: python a.py 10 12 method1
10
7user@pc: python a.py 10 12 method1
10
24user@pc: python a.py 10 12 method13
[-] function not found
3user@pc: python a.py 10 12 method13
[-] function not found
4user@pc: python a.py 10 12 method13
[-] function not found
5Output: