我想创建一个脚本,该脚本需要使用两个参数:
- 目录路径,
- files - directory_path 参数下的文件列表。
我写过这样的东西:
#!/usr/bin/python3
import argparse
import os
import argcomplete
if __name__ == '__main__':
parser = argparse.ArgumentParser()
parser.add_argument("directory_path",
help="a path to some directory",
nargs=1)
# conditional choices of an argument
conditional_choices = [os.listdir(parser.parse_known_args()[0].directory_path[0])]
parser.add_argument("files",
metavar="FILES",
nargs='+',
choices=conditional_choices)
argcomplete.autocomplete(parser)
args = parser.parse_args()
print("directory_path {}".format(args.directory_path))
print("files {}".format(args.files))
所以files参数取决于directory_path参数。
使用:Python3.8
问题
对于上面的代码片段,files参数的 bash-completion(从register-python-argcomplete3 构建)不起作用。如果我在有效命令(带有路径和文件)之后按回车键,则会出现错误
error: argument FILES: invalid choice: ...