Python argparse 可能为空字符串值

Kur*_*orn 10 argparse python-3.x

我想使用 argparse 在我的主函数中传递一些值。在调用 python 文件时,我总是希望包含参数的标志,同时包含或排除其字符串参数。这是因为如果可能的话,调用 python 文件的一些外部代码会变得简单得多。

通过调用 parser.add_argument 添加参数时,我尝试将默认值default=None设置为并将其设置为default=''。看来我自己无法完成这项工作..

def main():
    parser = argparse.ArgumentParser()
    parser.add_argument('-p', '--projects_to_build', default='')
    args = parser.parse_args()
Run Code Online (Sandbox Code Playgroud)

此调用工作正常:

py .\python_file.py -p proj_1,proj_2,proj_3
Run Code Online (Sandbox Code Playgroud)

此调用不会:

py .\python_file.py -p

python_file.py: error: argument -p/--projects_to_build: expected one argument
Run Code Online (Sandbox Code Playgroud)

Pat*_*ugh 10

你需要传递一个nargs'?'withconst=''

parser.add_argument('-p', '--projects_to_build', nargs='?', const='')
Run Code Online (Sandbox Code Playgroud)

您还应该考虑添加,required=True这样您就不必也通过default=''