使用用户输入的文件路径自动完成

时间:2011-07-11 21:28:14

标签: python bash input autocomplete

(蟒)

我正在寻找文件路径的用户输入。这似乎很基本,但我似乎无法获得readline或rlcompleter工作。

相当多: variable = raw_input('Filepath:')然后文件路径具有自动完成功能,就像在shell中一样。

我不限于python,我愿意使用任何语言,只要我可以将变量设置为文件路径并使用自动完成功能获取文件路径。

我已经看到了这个:Tab completion in Python's raw_input()帮助我了解了要查找的内容,虽然问题是它需要在文件路径前面的命令,例如“extra”。我需要将变量设置为文件路径。你会觉得它很简单,但我在任何地方都没有找到太多东西,而我找到的少数并不是我想要的东西。

在bash中有一个read -e命令可以在命令行中运行,但是在一个奇怪的脚本中无法识别它。这正是我所寻找的,只要它可以在脚本中使用来将变量设置为等于自动完成的文件路径。

2 个答案:

答案 0 :(得分:28)

这样的东西?

import readline, glob
def complete(text, state):
    return (glob.glob(text+'*')+[None])[state]

readline.set_completer_delims(' \t\n;')
readline.parse_and_bind("tab: complete")
readline.set_completer(complete)
raw_input('file? ')

答案 1 :(得分:1)

这只是松散的python,我怀疑有人可能会破解这个并导致各种各样的问题......或者其他什么,但这是我让bash和python一起玩的方式。

import subprocess

the_file=subprocess.check_output('read -e -p "Enter path file:" var ; echo $var',shell=True).rstrip()