非常教程

Python参考手册

构架 | Frameworks

cmd

源代码: Lib / cmd.py

Cmd类为编写面向行的命令解释一个简单的框架。这些对于测试线束,管理工具和原型来说通常很有用,这些工​​具和原型稍后将被包装在更复杂的界面中。

class cmd.Cmd([completekey[, stdin[, stdout]]])

一个Cmd实例或子类实例是一个面向行的解释器框架。没有充分的理由来实例化Cmd自己; 相反,它作为您自己定义的解释器类的超类很有用,以继承Cmd方法和封装操作方法。

可选参数completekeyreadline完成键的名称; 它默认为Tab。如果completekeyNonereadline是可用的,命令完成自动完成。

可选参数stdinstdout指定了Cmd实例或子类实例将用于输入和输出的输入和输出文件对象。如果没有指定,他们将默认为sys.stdinsys.stdout

如果你想要使用一个给定的stdin,确保将实例的use_rawinput属性设置为False,否则stdin将被忽略。

在版本2.3中更改:添加了标准输入标准输出参数。

1. Cmd对象

一个Cmd实例有以下方法:

Cmd.cmdloop([intro])

反复发出提示,接受输入,从收到的输入中解析出一个初始前缀,并分派给操作方法,将其余的行作为参数传递给它们。

可选参数是在第一个提示之前发布的横幅或介绍字符串(这将覆盖intro类属性)。

如果readline模块被加载,输入将自动继承类似bash的历史列表编辑(例如,Control-P滚动回到最后一个命令,Control-N转到下一个命令,以Control-F非破坏性的方式向右Control-B移动光标,破坏性地等)。

输入的文件结束被作为字符串传回'EOF'

一个解释器实例会识别一个命令名称,foo当且仅当它有一个方法do_foo()。作为一种特殊情况,以字符开头的行将'?'被分派给该方法do_help()。作为另一种特殊情况,以字符开头的行将'!'被分派给方法do_shell()(如果定义了这种方法)。

postcmd()方法返回一个真值时,这个方法会返回。该参数postcmd()是命令的相应的返回值do_*()的方法。

如果启用了完成,完成命令将自动完成,并通过调用complete_foo()参数textlinebegidxendidx来完成命令args 。text是我们试图匹配的字符串前缀:所有返回的匹配都必须以它开头。是删除前导空白的当前输入行,begidxendidx是前缀文本的开始和结束索引,可用于根据参数位于哪个位置来提供不同的完成。

所有Cmd继承预定义的子类do_help()。此方法使用参数'bar'调用,调用相应的方法help_bar(),如果不存在,则打印文档字符串(do_bar()如果可用)。如果没有参数,则do_help()列出所有可用的帮助主题(即所有具有相应help_*()方法或具有文档字符串的命令的命令),并列出所有未记录的命令。

Cmd.onecmd(str)

解释参数,就好像它是根据提示输入的一样。这可能会被忽略,但通常不需要; 请参阅precmd()postcmd()有用的执行钩子的方法。返回值是一个标志,指示解释器是否应停止解释命令。如果strdo_*()命令有一个方法,则返回该方法的返回值,否则返回该方法的返回值。default()

Cmd.emptyline()

在响应提示输入空行时调用的方法。如果此方法未被覆盖,则重复输入的最后一个非空命令。

Cmd.default(line)

在命令前缀未被识别时在输入行上调用的方法。如果这个方法没有被覆盖,它会输出一个错误信息并返回。

Cmd.completedefault(text, line, begidx, endidx)

当没有特定于命令的complete_*()方法可用时,调用方法来完成输入行。默认情况下,它返回一个空列表。

Cmd.precmd(line)

钩方法执行的命令行之前解释,但会产生和发出的输入提示之后。这个方法是一个存根Cmd; 它存在被子类覆盖。返回值用作将由方法执行的命令onecmd(); 该precmd()实现可以重新写入命令或简单地返回线不变。

Cmd.postcmd(stop, line)

Hook方法在命令调度完成后执行。这个方法是一个存根Cmd; 它存在被子类覆盖。line是执行的命令行,stop是一个标志,表示在调用之后执行是否会终止postcmd(); 这将是方法的返回值onecmd()。该方法的返回值将被用作与停止对应的内部标志的新值; 返回错误将导致解释继续。

Cmd.preloop()

钩子方法cmdloop()被调用时执行一次。这个方法是一个存根Cmd; 它存在被子类覆盖。

Cmd.postloop()

Hook方法在cmdloop()即将返回时执行一次。这个方法是一个存根Cmd; 它存在被子类覆盖。

Cmd子类的实例具有一些公共实例变量:

Cmd.prompt

发出提示以请求输入。

Cmd.identchars

接受命令前缀的字符串。

Cmd.lastcmd

最后看到非空命令前缀。

Cmd.cmdqueue

排队的输入行列表。cmdloop()当需要新输入时,会检查cmdqueue列表; 如果它不是空的,它的元素将按顺序处理,就像在提示符处输入一样。

Cmd.intro

作为介绍或横幅发布的字符串。可以通过给cmdloop()方法一个参数来覆盖。

Cmd.doc_header

如果帮助输出包含用于记录的命令的部分,则发出头文件。

Cmd.misc_header

如果帮助输出具有用于其他帮助主题的部分(即,help_*()没有相应do_*()方法的方法),则发出头文件。

Cmd.undoc_header

如果帮助输出具有未记录命令的部分(即,do_*()没有相应help_*()方法的方法),则发出头文件。

Cmd.ruler

用于在帮助消息标题下绘制分隔线的字符。如果为空,则不绘制标尺线。它默认为'='

Cmd.use_rawinput

一面旗帜,默认为真。如果为true,则cmdloop()用于raw_input()显示提示并阅读下一个命令; 如果错误,sys.stdout.write()并被sys.stdin.readline()使用。(这意味着通过readline在支持它的系统上导入,解释器将自动支持类Emacs的行编辑和命令历史击键。)

构架 | Frameworks相关

Python

Python 是一种面向对象的解释型计算机程序设计语言,由荷兰人 Guido van Rossum 于1989年发明,第一个公开发行版发行于1991年。 Python 是纯粹的自由软件, 源代码和解释器 CPython 遵循 GPL 协议。Python 语法简洁清晰,特色之一是强制用空白符( white space )作为语句缩进。

主页 https://www.python.org/
源码 https://github.com/python/cpython
版本 2.7
发布版本 2.7.13

Python目录

1.内置常量 | Built-in Constants
2.内置例外 | Built-in Exceptions
3.内置函数 | Built-in Functions
4.内置类型 | Built-in Types
5.编译器 | Compiler
6.加密 | Cryptography
7.数据压缩 | Data Compression
8.数据持久性 | Data Persistence
9.数据类型 | Data Types
10.调试和分析 | Debugging & Profiling
11.开发工具 | Development Tools
12.文件和目录访问 | File & Directory Access
13.文件格式 | File Formats
14.构架 | Frameworks
15.输入 | Importing
16.输入/输出 | Input/ouput
17.国际化 | Internationalization
18.网络 | Internet
19.网络数据 | Internet Data
20.翻译 | Interpreters
21.语言 | Language
22.记录 | Logging
23.Mac OS
24.MS Windows
25.多媒体 | Multimedia
26.联网 | Networking
27.数字与数学 | Numeric & Mathematical
28.操作系统 | Operating System
29.可选操作系统 | Optional Operating System
30.限制执行 | Restricted Execution
31.运行 | Runtime
32.SGI IRIX
33.软件包装与分销 | Software Packaging & Distribution
34.字符串 | String
35.结构化标记 | Structured Markup
36.Tk
37.Unix
38.Python 简介
39.Python pass 语句
40.Python 循环嵌套
41.Python 运算符
42.Python log10() 函数
43.Python log() 函数
44.Python floor() 函数
45.Python fabs() 函数
46.Python exp() 函数
47.Python cmp() 函数
48.Python ceil() 函数
49.Python abs() 函数
50.Python Number(数字)
51.Python pow() 函数
52.Python modf() 函数
53.Python min() 函数
54.Python max() 函数
55.Python asin() 函数
56.Python acos() 函数
57.Python uniform() 函数
58.Python shuffle() 函数
59.Python seed() 函数
60.Python random() 函数
61.Python randrange() 函数
62.Python choice() 函数
63.Python sqrt() 函数
64.Python round() 函数
65.Python radians() 函数
66.Python degrees() 函数
67.Python tan() 函数
68.Python sin() 函数
69.Python hypot() 函数
70.Python cos() 函数
71.Python atan2() 函数
72.Python atan() 函数
73.Python 元组
74.Python 列表(List)
75.Python 字符串
76.Python 字典(Dictionary)
77.Python 日期和时间
78.Python 函数
79.Python 模块
80.Python capitalize()方法
81.Python center()方法
82.Python count() 方法
83.Python expandtabs()方法
84.Python endswith()方法
85.Python encode()方法
86.Python decode()方法
87.Python find()方法
88.Python index()方法
89.Python 异常处理
90.Python isspace()方法
91.Python isnumeric()方法
92.Python islower()方法
93.Python isdigit()方法
94.Python isalpha()方法
95.Python isalnum()方法
96.Python isupper()方法
97.Python istitle()方法
98.Python min()方法
99.Python max()方法
100.Python maketrans()方法