停止cmdloop()从python中的输入行中剥离空白

停止cmdloop()从python中的输入行中剥离空白,python,Python,简而言之,我的代码如下所示: class myClass(cmd.Cmd): def do_myFunction(self, line): print line+'!' if __name__ == '__main__: myClass().cmdloop() 当我在命令行中使用此命令并在末尾键入一行空格时,cmdloop()readline似乎会自动将它们剥离,而不是打印: myline ! 它打印: myline! 有人知道怎么解决这个问题吗?提前谢谢 从评论中复制

简而言之,我的代码如下所示:

class myClass(cmd.Cmd):

  def do_myFunction(self, line):
    print line+'!'

if __name__ == '__main__:
  myClass().cmdloop()
当我在命令行中使用此命令并在末尾键入一行空格时,cmdloop()readline似乎会自动将它们剥离,而不是打印:

myline !
它打印:

myline!

有人知道怎么解决这个问题吗?提前谢谢

从评论中复制答案,以便从“未回答”筛选器中删除此问题:


“它看起来像是重写了
parseline()
方法,并执行了与现在基本相同的操作,但删除对
.strip()
的调用将修复它,而无需重写整个模块…”


~有礼貌地回答

您应该在第4行留出一个空格,如下所示:

print line+' !'
而不是:

print line+'!'

字符串中的额外空间将“推”字符串!离开绳子的其余部分。我希望这对你有帮助

如果不重写整个模块,我认为这是不可能的。你为什么想要这种行为?如果你使用
打印行“!”
,会发生什么?@Noelkd:OP显然想要输入的是真正的空白,而不仅仅是输出中的一个小空格,不管输入的是什么。他可能只想要一个空白,但是您的权利我的答案不是答案,因此改为注释。它看起来像是覆盖了
parseline()
方法,并且做了与现在基本相同的事情,但是删除了对
的调用。strip()
将修复它,而无需重写整个模块……您可以在这里找到
parseline
的源代码: