是否可以使用 argparse 但传入自定义 argv 而不是使用 sys.argv?
Is it possible to use argparse but pass in a custom argv instead of it using sys.argv?
是否可以传入自定义参数列表?
与现实生活中的用例相比,更多是出于好奇,但例如,我可能想在让 argparse 完成其工作之前将所有参数转换为小写。
Yes。只需传入您想要的列表即可 parse_args
.
来自文档中的示例:
>>> parser.parse_args(['--sum', '7', '-1', '42'])
Namespace(accumulate=<built-in function sum>, integers=[7, -1, 42])
parse_args
如果您不给它一个列表参数,则使用 sys.argv[1:]
。你可以自己加载sys.argv
,然后修改。如果就地修改,它仍然可以隐式传递。
import sys
import argparse
parser = ...
# modify sys.argv inplace
sys.argv[1:] = [x.lower() for x in sys.argv[1:]]
args = parser.parse_args() # pass it implicitily
# or pass it explicitly
args = parser.parse_args(sys.argv[1:])
是否可以传入自定义参数列表?
与现实生活中的用例相比,更多是出于好奇,但例如,我可能想在让 argparse 完成其工作之前将所有参数转换为小写。
Yes。只需传入您想要的列表即可 parse_args
.
来自文档中的示例:
>>> parser.parse_args(['--sum', '7', '-1', '42'])
Namespace(accumulate=<built-in function sum>, integers=[7, -1, 42])
parse_args
如果您不给它一个列表参数,则使用 sys.argv[1:]
。你可以自己加载sys.argv
,然后修改。如果就地修改,它仍然可以隐式传递。
import sys
import argparse
parser = ...
# modify sys.argv inplace
sys.argv[1:] = [x.lower() for x in sys.argv[1:]]
args = parser.parse_args() # pass it implicitily
# or pass it explicitly
args = parser.parse_args(sys.argv[1:])