在控制台中执行 python 脚本的选项卡自动完成

Posted

技术标签:

【中文标题】在控制台中执行 python 脚本的选项卡自动完成【英文标题】:tab autocomplete on python script execution in console 【发布时间】:2016-07-15 17:50:58 【问题描述】:

我遇到了这个“问题”(因为没有更好的词),每当我运行带有参数的 python 脚本时,我都无法使用 Unix 控制台的制表符完成功能。例如,当我想在脚本执行中放置一个文件时。 希望这个例子能更好地说明我的问题。

案例一

>python3 script.py
 [tab]
 folder/ folder1/ data.dat

案例 2

>python3 script.py -f d
 [tab]
 folder/ folder1/ (file data.dat not showing)

理想情况

>python3 script.py -f data.dat - n 2 ....

希望我说清楚了,有人可以向我解释一下,我猜 python 不允许这样做,或者需要以某种方式进行配置。

我在我的脚本中使用argparse 和通常的代码..

    ap.add_argument('-f', '--file', type=str, action='store', help='Input file.',metavar='FILE')

我已经尝试过type=argparse.FileType('r'),但还是一样。

我想实现这一点,因为我目前正在工作的文件名称很长,并且要求不要每次都写文件名。

无论如何,感谢阅读。

【问题讨论】:

跟python完全没有关系。您使用的是什么外壳/操作系统? Debian 8 wheezy 或 Ubuntu 16.04,两者都是一样的,使用默认的 shell。 所以 bash,我猜。尽管我没有使用与您相同的发行版,但这对我来说在 bash 中非常有效。它应该根据您输入的最后一个字母进行过滤,因此如果您输入-f d,我不希望它显示folder/folder/`,因为它们都不是以d 是的,我知道,我希望如果我输入 -f d 文件 data.dat 会显示。但它没有@BrendanAbel 【参考方案1】:

好的,解决这个问题。使用 python 3.5 我可以实现我想要的,在执行 python 脚本时在 bash 中自动完成文件名称。

所以

> python3 script.py
[tab]
 folder/ folder1/ data.dat
> python3 script.py -f d
[tab]
folder/ folder1/ (file data.dat not showing)

和 python 3.5

> python3.5 script.py -f d
[tab]
 folder/ folder1/ data.dat

这个页面也让我找到了一些有价值的答案。

https://docs.python.org/3/tutorial/interactive.html

https://argcomplete.readthedocs.io/en/latest/

再次感谢。

【讨论】:

以上是关于在控制台中执行 python 脚本的选项卡自动完成的主要内容,如果未能解决你的问题,请参考以下文章

有没有办法在每次控制进入网络选项卡中的脚本时放置一个调试器

每 x 秒执行一次 Python 而无需重新打开选项卡

从选项卡控制器中删除选项卡时的自动布局问题

Angular 材质选项卡和自动完成功能

Linux 可执行参数选项卡完成

某些选项卡字符在shell脚本中不匹配,但在命令行上执行