python Argparse 中的额外字符?

Extra Characters in python Argparse?

我有一个 argparse 函数:

def argParse():
# Possible Arguments
parser = argparse.ArgumentParser()

parser.add_argument("-s", "--search", dest="s", help="Seach parameters")
parser.add_argument("-d", "--directory", dest="d", help="Choose Directory to save data")
args = parser.parse_args()

params = str(args.s)
directory = str(args.d)
if params == "None":
    print("Search parameters are null, exiting program.")
    parser.print_help()
    exit(1)
if directory == "None":
    print("directory is null, storing to current working directory.")

但是,它是在使用量输出中添加额外的 capitol S 和 D 吗?知道如何清理它吗?

usage: scan.py [-h] [-s S] [-d D]

optional arguments:
  -h, --help           show this help message and exit
  -s S, --search S     Seach parameters
  -d D, --directory D  Choose Directory to save data

我认为您正在寻找 metavar kwarg。

试试这个:

import argparse

def parse_args():
    parser = argparse.ArgumentParser()

    parser.add_argument('-s', '--search', dest='s', metavar='\b', help='Search parameters')
    args = parser.parse_args()

parse_args()

\b是后面的space字符,所以也去掉了两者之间的space, 而不是使用 "" 我相信它仍然会在初始变量名称后留下 space。

output of python argparse_test.py -h:

usage: argparse_test.py [-h] [-s]

optional arguments:
  -h, --help        show this help message and exit
  -s, --search  Search parameters