Автозаполнение имени файла в скрипте Python

1

Я создал скрипт python, который просит пользователя ввести 2 или 3 имени файла, которые необходимо проанализировать. Вставка имени файла выполняется в скрипте (он не передается как аргумент argparse, потому что есть другие варианты, которые пользователь должен сделать до этого). Из-за соглашения об именах компаний эти имена файлов могут быть довольно длинными и, следовательно, громоздкими по типу. Чтобы помочь пользователю, я печатаю содержимое каталога. На данный момент я использую что-то вроде этого:

fname = raw_input("Insert phase 1 filename: ")

(чем я могу проверить файл if и т.д.)

Есть ли способ реализовать автозаполнение для имен файлов внутри скрипта python, написав функцию custom()?

Обратите внимание, что сценарий должен запускаться на разных компьютерах/ОС, и я не могу попросить пользователей установить некоторые нестандартные библиотеки python.

Если нет чистого способа сделать это, я могу использовать менее причудливое решение только распечатать номер перед именами файлов в каталоге и попросить пользователя вставить только номер.

  • 3
    Хотя это может быть возможно, не существует простого способа сделать это с помощью raw_input2. In general, it is not great practise to use хорошая raw_input2. In general, it is not great practise to use raw_input` для чего-то другого, кроме обучения. Вы говорите, что не можете использовать параметры командной строки, но уверены ли вы в этом?
  • 0
    Спасибо. Решение от дубликатов работает на моей домашней машине (Ubuntu). Я опробую его завтра на работе на других машинах.
Показать ещё 2 комментария
Теги:
python-2.x
autocomplete

1 ответ

1

Это может помочь: Завершение вкладки в raw_input() Python's()

Если вы не хотите использовать это и просто "угадать" файл:

commands = ["cute_file", "awesome_file"]

def find_file(text):
    options = [i for i in commands if i.startswith(text)]
    if len(options):
        return options
    else:
        return None


my_input = input("File name:")
print(find_file(my_input))
  • 0
    Спасибо за предложение дубликата вопроса. Это было только моей ленью, мешающей мне найти это.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню