我想知道如何制作用户可以输入的命令列表。例如,用户在“who”中键入以获取MUD中的人员列表。这一切都是用if,elif和其他蟒蛇完成的吗?
我使用的是Python 3.1 btw。
答案 0 :(得分:11)
不。派遣词典。
def who(*args, **kwargs):
...
commands = {
'who': who,
...
}
...
if command in commands:
commands[command](*args, **kwargs)
else:
print('Bad command or file name')
答案 1 :(得分:4)
cmd
模块是为此而制作的。只是子类cmd.Cmd()
,包括一组开始do_XXX
的方法 - 所以do_who()
会提供who
命令。
答案 2 :(得分:0)
查找input
函数以获取用户的命令行输入:
输入([提示])
如果存在prompt参数,则将其写入标准输出 没有尾随换行符。该 函数然后从输入中读取一行, 将它转换为一个字符串(剥离一个 尾随换行符),然后返回。
这是一个小例子:
s = input("Enter a command: ")
if s == 'who':
# do stuff
elif s == 'help':
# show help
else
# do other stuff
答案 3 :(得分:0)
您可以导入sys模块,而不是使用该模块的sys.stdin.readline()部分。这将接受来自命令行或终端的输入,这意味着您也必须从其中一个输入它。
import sys
sys.stdout.write("$ ")
command = sys.stdin.readline()
command = command.strip() #Remove the new line character
if command = argument:
do code
elif command = other argument:
do more code
else:
Thats not a command than
使用它的好处是,在Linux系统下,程序仍然可以运行。例如,我使用它来接受命令来检查我的服务器/客户端程序以找到3个立方体的总和。我可以告诉它退出,检查找到的多维数据集,或查看客户端和线程列表。