Python 学习日知录(七)- cmd进阶
来源:互联网 发布:大乐斗技能奥义数据 编辑:程序博客网 时间:2024/06/08 09:39
Python 学习日知录(七)- cmd进阶
python官方文档中对cmd模块的定义为:
Support for line-oriented command interpreters
也就是为创建命令行解释器程序做支持。
除了为命令行程序提供基础的框架,cmd模块还内置了一些特别的“保留符”以及更细致的控制手段。
1. ? - 帮助保留符
以?开始的行会调用help命令,比如:
- ?version 调用help_version方法
-?调用help方法
2. !- 执行操作系统shell命令
提供了在命令行里面直接执行操作系统shell命令的功能。
如:!ls 执行linux系统里的ls命令
如果重构了do_shell方法,则!命令会被激活。以下是do_shell方法的参考实现:
def do_shell(self, args): '''run a shell cmd ''' subshell = subprocess.Popen(args, shell=True, stdout=subprocess.PIPE) print subshell.communicate()[0]
运行效果如下,执行ls命令,打印目录下的文件列表:
>!lscmd_learn.pyconfigTest.pyconfig_fileloggingTest.pytestlog.log
3. 一些细节控制的方法
4. 关于退出
在命令行应用里,一般会定义两种退出命令:
- quit 退出当前模式
- exit 退出进程
实现如下:
def do_quit(self, arg): #定义退出命令'quit',退出当前loop循环 return True # 函数返回True,则干净退出当前loop循环 def do_exit(self): # 强制退出进程 sys.exit()
同时,主函数修改如下:
if __name__ == '__main__': myCmd = MyCmd() # 创建一个MyCmd的实例 myCmd.cmdloop() # 启动cmd循环 print 'exit by user' print 'bye'
运行结果:
>exitTraceback (most recent call last): # 抛异常退出
>quitexit by userbyeProcess finished with exit code 0 #跳出loop循环退出
修改主程序,让exit优雅的退出:
if __name__ == '__main__': myCmd = MyCmd() # 创建一个MyCmd的实例 try: myCmd.cmdloop() # 启动cmd循环 print 'quit by user' except: print "\nexit by user\n" # 捕获异常 print 'bye'
参考文献:
1. 利用python cmd模块开发小型命令行应用程序
2. 23.1. cmd — Support for line-oriented command interpreters
阅读全文
0 0
- Python 学习日知录(七)- cmd进阶
- Python学习之路七---进阶知识
- Python进阶(七):super()函数
- 学习Python (七)
- python学习-面向对象进阶之属性property(七)
- 深度学习进阶(七)--复习(一)
- 深度学习进阶(七)--复习(二)
- python学习进阶(一)
- python学习小计(七)
- python 学习笔记(七)
- Python学习笔记(七)
- Python学习笔记(七)
- Python学习笔记(七)
- python学习记录(七)
- Python基础学习(七)
- Python学习笔记(七)
- python爬虫进阶(七):应对反爬虫的策略
- python模块学习---cmd
- tensorflow学习笔记二——建立一个简单的神经网络拟合二次函数
- 从YUV420p数据构造AVFrame
- HihoCoder
- 微信小程序分页加载
- 【C语言】模拟33选7的彩票生成器
- Python 学习日知录(七)- cmd进阶
- hadoop namenode -format 出错
- (考试)2017年大一下学期C++期末考试题目五
- Levenshtein编辑距离
- hbase 源代码解析(3) 的createTable 服务端解析第二部分
- 爬取糗事百科的段子Demo
- Python中defaultdict与lambda表达式小结
- Array-leetcode 566 Reshape the Matrix
- CSS随笔2