一天的好时光!首先,我要说我是Python世界的新手。我在解析输入参数时遇到问题。此时,我正在使用Python 2.7和名为argparse
的模块。我正在尝试设计一个简单的应用程序,它将能够解析简单的输入参数。这是一个简短的示例:
my_app.py sync --force
第二个例子:
my_app.py补丁-分支
我看到为此,我可以使用可以与位置和可选参数一起使用的add_argument
。就像我的情况一样,我希望有几个位置(但同时是可选的)和几个可选的参数。为此,我设计了小脚本
if __name__ == '__main__':
parser = argparse.ArgumentParser(description='My App')
parser.add_argument('sync', type=bool, const=True, nargs='?')
parser.add_argument('-f', '--force', dest='sync_force', type=bool, const=True, nargs='?')
parser.add_argument('-b', '--branch', type=str, const=True, nargs='?')
parser.add_argument('-u', '--url', type=str, const=True, nargs='?')
parser.add_argument('patch', type=bool, const=True, nargs='?')
parser.add_argument('revert', type=bool, const=True, nargs='?')
parser.add_argument('verify', type=bool, const=True, nargs='?')
values = parser.parse_args()
if values.revert:
handler.revert()
else:
parser.print_help()
[我看到我可以使用nargs='?'
将位置参数指定为可选参数,但是每次我调用脚本时,即使我指定了' patch”。因此,我认为它只是显示第一个添加的元素。您能告诉我什么地方出了问题吗?