Có thể? có thể, nhưng tôi sẽ không giới thiệu nó. argparse
là công cụ không tốt nhất để phân tích cú pháp kiểu nhập này hoặc ngược lại, đây là đặc điểm kỹ thuật đối số kém từ góc nhìn argparse
.
Bạn có nghĩ về dòng usage
sẽ trông như thế nào không? Làm cách nào để giải thích điều này cho người dùng của bạn?
Bạn phân tích cú pháp này hoạt động như thế nào từ số sys.argv
trực tiếp? Có vẻ như bạn có thể thu thập 3 miếng:
prog = sys.argv[0]
arg1 = sys.argv[1]
keys = sys.argv[2::2]
# maybe strip -- off each
values = sys.argv[3::2]
kvdict = {k:v for k, v in zip(keys, values)}
Có các câu hỏi SO khác về cặp chung key:value
. Những điều thích:
--args key1:value1 key2:value2
này có thể được xử lý với nargs='*'
và một hành động mà chia mỗi chuỗi đầu vào :
(hoặc =
) và các cửa hàng thứ bởi key
.
Yêu cầu của bạn ít nhất là tuân theo việc sử dụng argparse
vì yêu cầu bỏ qua toàn bộ ý tưởng cờ đối số phù hợp với các chuỗi trong argv
. Nó đòi hỏi, một số cách, tắt tất cả phân tích cú pháp bình thường argparse
.
Hình như tôi đã gợi ý điều tương tự một vài năm trước đây
Parse non-pre-defined argument
hoặc sớm hơn
Using argparse to parse arguments of form "arg= val"
Một trong những câu trả lời trước đó sử dụng 'parse_known_args', nhưng sau đó sử dụng' cái phong cách sys.argv' của phân tích cho 'unknown'. Tôi thích ý tưởng của bạn về việc thêm những lá cờ đó vào trình phân tích cú pháp và phân tích cú pháp lại. Yêu cầu khắt khe đòi hỏi các giải pháp tấn công. :) – hpaulj