Tôi đang cố gắng chấp nhận một đối số kiểu = dict với argparse nhưng không có vấn đề gì khi nó đưa ra một lỗi giá trị dict không hợp lệ.Chấp nhận một từ điển làm đối số với argparse và python
#!/usr/bin/env python
import argparse
MYDICT = {'key': 'value'}
parser = argparse.ArgumentParser()
parser.add_argument("-m", "--mydict", action="store",
required=False, type=dict,
default=MYDICT)
args = parser.parse_args()
print args.mydict
Đây là những gì xảy ra khi tôi cố gắng và vượt qua một từ điển để kịch bản
./argp.py -m "{'key1': 'value1'}"
usage: argp.py [-h] [-m MYDICT]
argp.py: error: argument -m/--mydict: invalid dict value: "{'key1': 'value1'}"
Nhìn vào tài liệu tôi sẽ nghĩ rằng điều này sẽ thực hiện được.
http://docs.python.org/dev/library/argparse.html
“Bất cứ đối tượng có hỗ trợ trong điều hành có thể được thông qua như giá trị lựa chọn, các đối tượng để dict, bộ đối tượng, container tùy chỉnh, vv đều được hỗ trợ.”
Dòng bạn trích dẫn từ tài liệu liên quan đến đối số từ khóa "lựa chọn", xác định giá trị của các đối số được cho phép. Thông qua một dict để lựa chọn có hiệu quả tương đương với đi qua một danh sách các phím. Do đó, việc chuyển "{'a': 2, 'b': 3}" sẽ hạn chế các đối số được phép cho cờ "--mydict" thành "a" hoặc "b". –