arg完成令人困惑的脚本

2024-06-24 13:12:02 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试使用argcomplete自动完成要输入脚本“setup\u warehouse\u env”的可能参数:

def env_completer(prefix, **kwargs):
    # Run the command cman env list and return the results as a list of strings
    process = subprocess.Popen(shlex.split("cman env list"), stdout=subprocess.PIPE, stderr=subprocess.PIPE)
    env_list = process.stdout.readlines()
    env_list = [line.rstrip('\n') for line in env_list]
    print env_list
    return [v for v in env_list if v.startswith(prefix or '')]


if __name__ == '__main__':
    arg_parser = argparse.ArgumentParser(description='Choose the warehouse environment')
    arg_parser.add_argument('--environment', type=str, default='',
                            help="Environment name").completer = env_completer
    argcomplete.autocomplete(arg_parser)
    args = arg_parser.parse_args()

问题是,我有另一个脚本已经使用arg complete(一个称为cman的脚本),而我的脚本在这里以某种方式结束时与cman脚本具有相同的自动完成功能。但是,我希望它有命令“cman env list”返回的选项(字符串列表)。你知道吗

我有另一个bash脚本来这样设置我的环境

eval "$(register-python-argcomplete setup_warehouse_env 2>/dev/null)"

setup_warehouse_env安装到一个全局二进制文件夹中,以便可以找到它。 我注意到函数“env\u completer”甚至没有被调用,因为我没有看到

print env_list

当我按tab键自动完成时。你知道吗


Tags: theenv脚本parserprefixreturnsetuparg