使用用户输入进行文件路径自动补全

12 投票
2 回答
11630 浏览
提问于 2025-04-16 21:18

(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? ')

撰写回答