Я пытаюсь реализовать python cmd, используя модуль cmd. Я хочу, чтобы автозаполнение файлов, поэтому я реализовал некоторые методы, однако, я видел, что текстовый параметр из «complete_put (self, text, line, begidx, endidx)»: «strips все символы«/». Кто-нибудь знает, почему и как я могу избежать такого поведения? Спасибо :)Slash and python cmd
ответ
Я решил. Просто нужно было изменить атрибуты set_completer_delims.
В настоящее время это больше не существует (или я просто не могу его найти?). Решение добавляет косую черту к атрибуту «identchars». – sol
@ S0lll0s 'set_completer_delims'is находится в модуле ** readline **. Я только что сделал: 'delims = readline.get_completer_delims()', а затем 'readline.set_completer_delims (delims.replace ('/', ''))'. Это позволит настроить модуль readline для этого сценария. Он работает отлично (Python 3.4). – LRMAAX
Это код, который я использовал, он основан на нескольких примерах, найденных в Интернете.
import os
import cmd
import readline
class Shell(cmd.Cmd, object):
def __init__(self):
cmd.Cmd.__init__(self)
def __complete_path(self, path=None):
return ['/bin', '/boot', '/etc']
def do_put(self,args):
print args
def complete_put(self, text, line, begidx, endidx):
print text
if not text:
return self.__complete_path()
return self.__complete_path(text)
Просто попробуйте Shell(). Cmdloop() и используйте 'put /'
Добро пожаловать в SO! Не могли бы вы добавить более подробную информацию? Покажите нам свой исходный код! Что вы пробовали? Каков ваш прецедент? Что работает? А что нет? Благодаря! – jathanism
Это то, что я пробовал: http://pastebin.com/Zwie5uRW Я поместил след в метод complete_put, чтобы посмотреть, какой текст. если строка «put /», текст «». Я пробовал это на python 2, кстати. – jsevilleja
Похоже, что у вас есть хорошая идея о том, что вы ожидаете от поведения, если бы вы могли перевести это на [короткий, самодостаточный, правильный пример] (http://sscce.org/), это сделает ваш вопрос легче ответить. –