Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/313.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
选项卡控制台中python脚本执行的自动完成_Python_Shell_Python 3.x_Unix_Execution - Fatal编程技术网

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

选项卡控制台中python脚本执行的自动完成,python,shell,python-3.x,unix,execution,Python,Shell,Python 3.x,Unix,Execution,我遇到了这个“问题”(因为没有更好的词),每当我运行带有参数的python脚本时,我都不能使用Unix控制台的tab completion函数。例如,当我想在脚本执行中放入一个文件时。 希望这个例子能更好地说明我的问题 案例1 >python3 script.py [tab] folder/ folder1/ data.dat 案例2 >python3 script.py -f d [tab] folder/ folder1/ (file data.dat not show

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

案例1

>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')
,但都是一样的

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


无论如何,谢谢你的阅读。

好的,谢谢你围绕这个问题所做的工作。使用Python3.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
这几页也让我找到了一些有价值的答案


再次感谢。

它与python完全无关。你用的是什么shell/OS?Debian8Wheezy或Ubuntu16.04,两者都一样,默认的是shell。我猜是bash。这在bash中非常适合我,尽管我没有使用与您相同的发行版。它应该根据您键入的最后一个字母进行过滤,因此如果您键入
-fd
,我不希望它显示
文件夹
文件夹
/`因为它们都不是以
d
开头的。是的,我知道,如果键入
-fd
,我希望会显示文件
数据.dat
。但事实并非如此