Đây là một biến thể của câu trả lời @ mgilson, nhìn trong sys.argv
để xem liệu chúng ta nên ngăn chặn một số giúp đỡ hay không
import argparse
import sys
def hide_args(arglist):
for action in arglist:
action.help=argparse.SUPPRESS
hidelist=[]
parser = argparse.ArgumentParser()
a1 = parser.add_argument('--foo',help='normal')
a2 = parser.add_argument('--bar',help='hidden')
hidelist.append(a2)
if '-h' in sys.argv[1:]:
hide_args(hidelist)
args = parser.parse_args()
Ở đây tôi đã chọn để giải thích --help
như yêu cầu để được giúp đỡ lâu dài; -h
cho ngắn. Thay vào đó, tôi có thể đã thêm đối số --longhelp
riêng biệt.
1207:~/mypy$ python3 stack37303960.py --help
usage: stack37303960.py [-h] [--foo FOO] [--bar BAR]
optional arguments:
-h, --help show this help message and exit
--foo FOO normal
--bar BAR hidden
cho một trợ giúp ngắn
1207:~/mypy$ python3 stack37303960.py -h
usage: stack37303960.py [-h] [--foo FOO]
optional arguments:
-h, --help show this help message and exit
--foo FOO normal
add_argument
trả về một con trỏ đến đối tượng Action
mà nó tạo ra. Ở đây tôi lưu những cái đã chọn trong số hidelist
. Sau đó, tôi có điều kiện lặp qua danh sách đó và thay đổi help
thành SUPPRESS
. Nhiều thuộc tính của một hành động có thể được thay đổi sau khi tạo ban đầu (thử nghiệm trong một phiên tương tác).
Trình phân tích cú pháp cũng duy trì danh sách tác vụ. Mặc định help
là chữ cái đầu tiên trên danh sách parser._actions
. Nó sử dụng danh sách này để phân tích cú pháp và định dạng trợ giúp.
In [540]: parser._actions[0]
Out[540]: _HelpAction(option_strings=['-h', '--help'], dest='help', nargs=0, const=None, default='==SUPPRESS==', type=None, choices=None, help='show this help message and exit', metavar=None)
Tôi không nghĩ điều đó là có thể, vì bạn ghi đè trợ giúp thuộc tính bằng 'argparse.SUPPRESS' thực sự là một chuỗi:' '== SUPPRESS ==' '. Bạn nhìn vào việc thực hiện 'add_argument', bạn có thể thấy rằng toàn bộ phương thức bị bỏ qua nếu' help == '== SUPPRESS ==' ' –
Xin lỗi, đây là một chủ đề - tôi đã tự hỏi những nút bấm có ý nghĩa gì trong ngữ cảnh này - Tôi Googled cho knobs mã máy tính và không thấy bất cứ điều gì có liên quan. – PyNEwbie
Nó chỉ là một từ đồng nghĩa cho tùy chọn. – chepner