使用 argparse.REMAINDER 时的用法信息
Usage message when using argparse.REMAINDER
我有一个 Python 程序,它的(唯一)位置命令行参数是一个或多个文件路径表达式。我使用 argparse 进行 CL 解析,argparse.REMAINDER
用于包含文件路径的变量。请参阅下面的代码:
import argparse
import sys
# Create parser
parser = argparse.ArgumentParser(
description="My test program")
def parseCommandLine():
# Add arguments
parser.add_argument('filesIn',
action="store",
type=str,
nargs=argparse.REMAINDER,
help="input file(s)")
# Parse arguments
args = parser.parse_args()
return(args)
def main():
# Get input from command line
args = parseCommandLine()
# Input files
filesIn = args.filesIn
# Print help message and exit if filesIn is empty
if len(filesIn) == 0:
parser.print_help()
sys.exit()
# Do something
print(filesIn)
if __name__ == "__main__":
main()
现在,当用户在没有任何参数的情况下运行脚本时,会产生以下帮助消息:
usage: test.py [-h] ...
其中...
表示位置输入。从用户的角度来看,如果在此处显示变量名称 (filesIn
) 会提供更多信息。特别是因为键入 test.py -h
结果是:
usage: test.py [-h] ...
My test program
positional arguments:
filesIn input file(s)
即usage 行显示 ...
但随后在位置参数列表中使用 filesIn
。
所以我的问题是是否有一些简单的方法可以更改此设置(即始终显示 filesIn
)?
这里不要使用argparse.REMAINDER
。您没有收集所有剩余的参数,您正在尝试获取文件名。
改为使用 '+'
将所有剩余参数捕获为文件名,您至少需要一个:
parser.add_argument('filesIn',
action="store",
type=str,
nargs='+',
help="input file(s)")
这会产生更好的帮助输出:
$ bin/python test.py
usage: test.py [-h] filesIn [filesIn ...]
test.py: error: too few arguments
$ bin/python test.py -h
usage: test.py [-h] filesIn [filesIn ...]
My test program
positional arguments:
filesIn input file(s)
optional arguments:
-h, --help show this help message and exit
我有一个 Python 程序,它的(唯一)位置命令行参数是一个或多个文件路径表达式。我使用 argparse 进行 CL 解析,argparse.REMAINDER
用于包含文件路径的变量。请参阅下面的代码:
import argparse
import sys
# Create parser
parser = argparse.ArgumentParser(
description="My test program")
def parseCommandLine():
# Add arguments
parser.add_argument('filesIn',
action="store",
type=str,
nargs=argparse.REMAINDER,
help="input file(s)")
# Parse arguments
args = parser.parse_args()
return(args)
def main():
# Get input from command line
args = parseCommandLine()
# Input files
filesIn = args.filesIn
# Print help message and exit if filesIn is empty
if len(filesIn) == 0:
parser.print_help()
sys.exit()
# Do something
print(filesIn)
if __name__ == "__main__":
main()
现在,当用户在没有任何参数的情况下运行脚本时,会产生以下帮助消息:
usage: test.py [-h] ...
其中...
表示位置输入。从用户的角度来看,如果在此处显示变量名称 (filesIn
) 会提供更多信息。特别是因为键入 test.py -h
结果是:
usage: test.py [-h] ...
My test program
positional arguments:
filesIn input file(s)
即usage 行显示 ...
但随后在位置参数列表中使用 filesIn
。
所以我的问题是是否有一些简单的方法可以更改此设置(即始终显示 filesIn
)?
这里不要使用argparse.REMAINDER
。您没有收集所有剩余的参数,您正在尝试获取文件名。
改为使用 '+'
将所有剩余参数捕获为文件名,您至少需要一个:
parser.add_argument('filesIn',
action="store",
type=str,
nargs='+',
help="input file(s)")
这会产生更好的帮助输出:
$ bin/python test.py
usage: test.py [-h] filesIn [filesIn ...]
test.py: error: too few arguments
$ bin/python test.py -h
usage: test.py [-h] filesIn [filesIn ...]
My test program
positional arguments:
filesIn input file(s)
optional arguments:
-h, --help show this help message and exit