【发布时间】:2017-08-23 21:42:26
【问题描述】:
我在 python3 中使用 arparse 时发现了一些奇怪的东西。
#!/usr/bin/env python3
import argparse
def create_parser():
p = argparse.ArgumentParser(add_help=True)
p.add_argument('-i', help='i parameter', required=True)
p.add_argument('-m', help='m parameter', required=True)
return p
if __name__ == '__main__':
p = create_parser()
n = p.parse_args()
print(n)
当我尝试启动它时
python3 ./script.py -i ./some_folder/some_file -m ./
bash 自动完成功能可与“-i”参数一起使用,但不能与“-m”一起使用。例如,如果我将“-m”重命名为“-me”,一切正常。
在 bash 中,我尝试使用“-m”参数启动其他命令,但它不仅适用于 argparse。这里哪里有错误?
【问题讨论】:
-
可能特定于您的
bash,对我有用。你在用argcomplete.readthedocs.io这样的东西吗?或者您的 bash 是否尝试自动完成不是文件名的 python 本身的“模块脚本”-m参数? -
我想到了 python '-m' 参数,但它也有 -i 参数,并且它有效))不是吗?我像在代码示例中一样使用它。但我尝试使用 'chmod +x' 使其可执行并且一切正常))
-
它被完全解释为python3的'-m'参数,就像'-c'参数。这两个参数不仅仅是一个“标志”。因此,对于使用此参数名称的自动完成工作,需要使脚本可执行。
标签: bash python-3.x argparse