автодополнение пути к файлу с использованием пользовательских данных - PullRequest
11 голосов
/ 12 июля 2011

(python)

Я хочу получить пользовательский ввод для пути к файлу.Это кажется довольно простым, но я не могу заставить работать readline или rlcompleter.

В значительной степени: variable = raw_input ('Filepath:'), а затем filepath имеет функции автозаполнения, как в оболочке.

Я не ограничен Python, я готов использовать любой язык, если я могу установить переменную в качестве пути к файлу и захватить путь к файлу, используя функцию автозаполнения.

Я видел это: Завершение табуляции в Python's raw_input () , которое помогло мне понять, что искать, хотя проблема заключалась в том, что требовалась команда передпуть к файлу, такой как "extra".Мне нужно установить переменную в качестве пути к файлу.Вы могли бы подумать, что это будет довольно просто, но я нигде ничего не нашел, и те немногие, что я нашел, были не совсем тем, что я искал.

В bash была команда read -e, которую можно запустить в командной строке, но она не распознается в нечетном сценарии.Это именно то, что я искал, если бы его можно было использовать внутри скрипта, чтобы установить переменную равной автозаполненному пути к файлу.

Ответы [ 2 ]

28 голосов
/ 12 июля 2011

Как то так?

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 голос
/ 04 октября 2017

Это только слабо выраженный python, и я подозреваю, что, возможно, есть способы, которыми кто-то может взломать это и вызвать у вас всевозможные проблемы ... или что-то в этом роде, но это способ, которым я заставил bash и python хорошо играть вместе.

import subprocess

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