使用用户输入进行文件路径自动补全
(python)
我想让用户输入一个文件路径。这看起来很简单,但我在使用readline或rlcompleter时遇到了问题。
基本上,我想要的是:变量 = raw_input(' 文件路径: '),然后这个文件路径可以像在命令行中那样有自动补全功能。
我并不局限于使用Python,只要能把变量设置为文件路径,并且能用自动补全功能获取这个路径,我都愿意尝试其他语言。
我看到过这个链接:Python的raw_input()中的Tab补全,这让我对应该寻找什么有了一些想法,不过问题是它要求在文件路径前面加一个命令,比如“extra”。我需要的是直接把变量设置为文件路径。你可能会觉得这很简单,但我在网上没找到太多相关的信息,而我找到的那些也不是我想要的。
在bash中,有一个read -e命令可以在命令行中运行,但在脚本中却无法识别,这让我觉得很奇怪。这个命令正是我想要的,如果它能在脚本中使用,来把变量设置为自动补全的文件路径,那就太好了。
2 个回答
1
这段话的意思是,这个方法和Python的关系不太紧密,我觉得可能有人会找到漏洞,导致你遇到各种问题……或者其他什么情况。不过,这是我让bash和Python能够很好地协同工作的一个方法。
import subprocess
the_file=subprocess.check_output('read -e -p "Enter path file:" var ; echo $var',shell=True).rstrip()
29
像这样吗?
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? ')