2013-02-20 36 views
9

Tôi đang sử dụng một nhóm loại trừ lẫn nhau, nhưng tôi có nhiều tùy chọn ở một trong các bộ độc quyền. Tôi muốn sử dụng của tôi trông như thế này:Thiết lập các bộ loại trừ lẫn nhau trong argparse

[--conf CONF | --hostname HOSTNAME --port PORT] 

Bất kỳ ý tưởng nào để đi kèm với điều này? Tôi đã thử thêm một nhóm đối số vào một nhóm loại trừ lẫn nhau, nhưng phần loại trừ lẫn nhau không áp dụng cho các nhóm con và cho phép --conf file --hostname host --port 22

+0

Cân nhắc việc thu gọn '--hostname' và' --port' thành một mục nhập '--host = HOST [: PORT]' duy nhất. – nneonneo

Trả lời

3

Không phải câu trả lời sử dụng argparse, nhưng có thể giải pháp cho vấn đề của bạn: sử dụng docopt thay vì argparse sẽ cho phép bạn chỉ viết các mẫu sử dụng của mình và để docopt tự động phân tích cú pháp và xác thực các arg được chuyển đến chương trình của bạn. Trong trường hợp của bạn,

prog_name (--conf CONF | --hostname HOST --port PORT) 

sẽ giúp bạn có được nhóm loại trừ lẫn nhau mà bạn muốn.

Các vấn đề liên quan