【发布时间】:2022-03-22 22:02:39
【问题描述】:
所以我有一个 python 程序可以读取这样的配置文件:
import argparse
parser = argparse.ArgumentParser()
parser.add_argument('-c', '--config', type=str, help='config file', required=True)
args = parser.parse_args()
cfg_filename = args.config
我希望能够在 bash 中自动完成路径。例如,假设上述程序名为main.py,并且有一个名为config_1.txt的配置文件,结构如下:
folder/
main.py
configs/
config_1.txt
假设在我的终端中它看起来像
user@host:~/folder$ python main.py -c con
我希望按一个标签可以:
user@host:~/folder$ python main.py -c config/
然后另一个选项卡给出
user@host:~/folder$ python main.py -c config/config_1.txt
我已经尝试添加
import argcomplete
argcomplete.autocomplete(parser)
但没用。
【问题讨论】:
-
您是否尝试注册(或重新注册)一个完整的功能? kislyuk.github.io/argcomplete/#common-problems
-
你练习过更简单的情况吗,比如
choices的参数?我在您的设置中看不到任何告诉完成者您想要目录中的任何内容的内容。您的 'config' 参数只需要一个字符串,没有任何指示(除了help)它应该是一个文件名,更不用说 shell 应该搜索的位置了。 -
您的 shell 是否会自动完成
tab上的路径与您正在调用的程序无关....当您在 bash 解释器上键入时,python 没有运行,所以您的程序不可能做你所描述的,如果那个目录结构存在,bash会自动完成它就好了。