我想自动缩进控制台应用程序的下一行,但用户需要能够将其删除。 sys.stdout.write
并print
制作不可删除的字符,我无法写入 sys.stdin (据我所知)。我本质上是在尝试进行智能缩进,但我只能嵌套越来越深。关于如何爬回来的任何想法?
编辑:我应该注意到这是使用 IronPython 的 Windows 程序的一部分。虽然我可以做一些更精彩的事情(并且可能在未来),但我希望以很少的努力作为起点,快速获得相当愉快的体验。
我想自动缩进控制台应用程序的下一行,但用户需要能够将其删除。 sys.stdout.write
并print
制作不可删除的字符,我无法写入 sys.stdin (据我所知)。我本质上是在尝试进行智能缩进,但我只能嵌套越来越深。关于如何爬回来的任何想法?
编辑:我应该注意到这是使用 IronPython 的 Windows 程序的一部分。虽然我可以做一些更精彩的事情(并且可能在未来),但我希望以很少的努力作为起点,快速获得相当愉快的体验。
该cmd
模块提供了一个非常简单的界面,用于为您的程序创建命令行界面。它可能无法将一些缓冲区字符放在下一行的前面,但如果您正在寻找一种明显的方式让您的用户知道该命令已返回,它可以在每个开头提供一个类似于 shell 的提示线。如果您已经为您的程序定义了函数,那么将它们集成到处理器中只需编写一个访问该函数的处理程序即可:
import cmd
import math
def findHpyot(length, height):
return math.sqrt(length **2 + height **2)
class MathProcessor(cmd.Cmd):
prompt = "Math>"
def do_hypot(self, line):
x = raw_input("Length:")
y = raw_input("Height:")
if x and y:
try:
hypot = findHypot(float(x), float(y))
print "Hypot:: %.2f" %hypot
except ValueError:
print "Length and Height must be numbers"
def do_EOF(self, line):
return True
def do_exit(self, line):
return True
def do_quit(self, line):
return True
if __name__ == "__main__":
cmdProcessor = MathProcessor()
cmdProcessor.cmdloop()
使用 cmd 编写交互式 shell 时要考虑的事项