Python命令行脚本:用户输入时的文件/目录自动补全

4 投票
1 回答
4055 浏览
提问于 2025-04-16 15:58

我正在写一个Python程序,这个程序是在Bash终端里运行的(而且已经依赖于Bash作为它的环境)。在这里,我有一个小的设置过程,它会询问用户一个在他电脑上的目录。下面是我读取输入的方式:

print "Input:",
input = sys.stdin.readline().strip()

现在我想让用户能够通过输入现有文件或目录的名字来自动补全他的输入。有什么好的方法可以做到这一点吗?我需要自己查找这些目录或文件,然后使用cmd这个包(就像这个例子)吗?还是说有更简单的“内置”方法可以实现?

如果我能用os.system来使用Bash的自动补全功能,那也是可以的。但是到目前为止,我尝试的所有方法都没有成功。这是我尝试过的:

os.system("read -e -p \"Input:\" INPUT")

但这很奇怪:Bash抱怨read: 1: Illegal option -e,尽管这个命令在一个简单的Bash脚本里是可以工作的。但我需要这个-e选项来进行补全。

有没有什么建议可以让我在Python控制台程序中实现文件或目录名的自动补全?

1 个回答

5

你可以去看看这个 readline模块。我在这里回答过一个 类似的问题,里面讲了如何自动补全文件名和文件夹名。如果你需要更多的细节,随时告诉我。

撰写回答