我正在使用argparser来解析命令行参数。
现在,我有类似
的东西./script.py 1112323 0 --salary 100000 -- age 34
前两个是位置参数,其余是可选的。
现在,我希望有一个功能,当用户在命令行中输入文件名作为输入时,它应覆盖上述参数并从文件头获取参数。当用户给出类似
的时候我就是我id|sequence|age|name|........... (header of the file with first two cols as positional arguments and rest positional)
在命令行中给出这个:
./script.py -f filename
它不应该抱怨上述位置论点。
这比我目前的实施更可行吗?
答案 0 :(得分:3)
您很可能需要自己实施此检查。使两个参数(位置和-f)可选(required = False和nargs =“*”),然后实现自定义检查并使用ArgumentParser的错误方法。为了方便用户在帮助字符串中提及正确的用法。
这样的事情:
parser = ArgumentParser()
parser.add_argument("positional", nargs="*", help="If you don't provide positional arguments you need use -f")
parser.add_argument("-f", "--file", required=False, help="...")
args = parser.parse_args()
if not args.file and not args.positional:
parser.error('You must use either -f or positional argument')