Когда объект Cmd анализирует ввод, он берет первое слово и использует его в качестве имени функции.Остальная часть текста передается как один параметр.Функции do_ * принимают только 2 параметра: self и остаток строки из ввода.Итак, если вы наберете:
> foo This is my text
В командной строке, то cmd попытается вызвать функцию self.do_foo («Это мой текст»).Он не разделит строку на аргументы-разделители для вас.То есть он не будет пытаться вызвать self.do_foo («This», «is», «my», «text»).
Если вы хотите, чтобы ваши функции обрабатывали больше аргументов, вы будетеНужно разобрать строку немного больше по своему усмотрению.Прямо сейчас у вас есть do_addtext, который принимает 3 параметра.Таким образом, вам придется переписать do_addtext, чтобы иметь только 2 параметра, например:
do_addtext(self, parameter):
"Add text to end of file."
filename,text = parameter.split(" ", 1) # <--- this does the parsing you wanted Cmd to do
if os.path.exists(filename) == True:
f = open(filename, 'a')
f.write("\n" + text)
print "\n>>> Text added!\n"
else:
print "\n>>> File do not exists\n"
Также смотрите эту вики на CmdModule .В нем есть объяснение методов do_xxx.