2

所以说我有这张图

class Graph:
    def __init__(self):
        self.nodes =[]
        self.edges = {}

    def add_node(self,value):
        self.nodes.append(value)

    def is_node_present(self,node):
        return True if node in self.nodes else False

现在我想做的是让用户与这个类进行交互。比如:

> g = Graph()
 query executed
> g.add_node(2)
  query executed
>g.is_node_present(2)
  True

你知道这样的事情......(直到用户按下一些秘密按钮退出)

我如何在python中做到这一点谢谢

4

3 回答 3

4

您想查看http://docs.python.org/2/library/cmd.html因为它处理处理循环等。

Dough Hellman http://www.doughellmann.com/PyMOTW/cmd/总是一个很好的例子资源。

从面团

import cmd

class HelloWorld(cmd.Cmd):
    """Simple command processor example."""

    def do_greet(self, person):
        """greet [person]
        Greet the named person"""
        if person:
            print "hi,", person
        else:
            print 'hi'

    def do_EOF(self, line):
        return True

    def postloop(self):
        print

if __name__ == '__main__':
    HelloWorld().cmdloop()

例子

$ python cmd_arguments.py
(Cmd) help

Documented commands (type help ):
========================================
greet

Undocumented commands:
======================
EOF  help

(Cmd) help greet
greet [person]
        Greet the named person

再次全部来自 Dough Hellman:D

于 2013-02-01T10:25:57.900 回答
1

非常简单的类似 python shell 的环境,使用exec

cmd = raw_input("> ")
while cmd:
    try:
        exec(cmd)
    except Exception, e:
        print str(e)
    cmd = raw_input("> ")

作为旁注,使用exec是危险的,只能由受信任的用户执行。这允许用户在您的系统上运行他们希望的任何命令。

于 2013-02-01T10:22:35.580 回答
1

您可以使用 raw_input() 执行此操作要退出,您必须按 Crtl+C

一个小示例脚本:

import readline # allows use of arrow keys (up/down) in raw_input()

# Main function
def main():
  # endless command loop
  while True:
    try:
      command = raw_input('$ ')
    except KeyboardInterrupt:
      print   # end programm with new line
      exit()

    parseCommand(command)

def parseCommand(command):
  print 'not implemented yet'

if (__name__ == '__main__'):
  main()
于 2013-02-01T10:24:06.517 回答