我在脚本中使用
argparse
Python 模块,如下所示:
import argparse
def get_info(line: str) -> tuple:
print(line.split("|"))
def main():
p = argparse.ArgumentParser()
p.add_argument("-f", "--file")
p.add_argument("-d", "--directory")
p.add_argument("-o", "--output",
default="stdout",
required=False)
args = p.parse_args()
if __name__ == "__main__":
main()
当我尝试像这样运行它时:
python script.py path/to/my/
然后按 Tab,它会显示可能的文件和目录的列表;这里没问题,没问题
但是,如果我尝试使用
-f
标志运行它:
python script.py -f path/to/my/
然后按 Tab,它会自动用目录补全,如果有更多目录,它会列出它们,但它完全忽略文件,我不知道为什么。
如果我用双破折号运行它(
--file
):
python script.py --file path/to/my/
然后就又可以正常工作了。
是shell问题还是Python问题?
正如@metatoaster所说,我用
complete -r
删除了所有自定义完成条目,我首先用complete -p > backup.sh
进行了备份,这似乎已经解决了问题!非常感谢大家!