设为首页 收藏本站
查看: 1297|回复: 0

[经验分享] Python command line 交互式框架

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2015-12-3 08:34:23 | 显示全部楼层 |阅读模式
  Python作为一种脚本语言,作为Perl的对手,在操作文件系统上面很有一套, 由于语言的推广,在web方面也出现了很多Python的框架,最有名的莫过于Django了,其实不太熟悉Django,但是近些年来Python在web方面没有太多的进展,反而back end javascript,例如nodejs的崛起,带动了javascript作为一个后端语言风潮,和以前的PHP,以及基于Java的J2ee, SpringMVC(曾经占有40%的web框架)竞争,个人觉得Python并不占优势。


  Python需要找到自己的发展方向,无疑Shellscript作为linux娘胎里带来的语言,其蹩脚性显而易见,而Perl is ugly, everyone knows。所以python可以在Command line这条路上多走一些。


  Prerequisite, I'm newbie in Python, so I just to share my learning python feelings. So Let's start.


Python and Pip
  我是用maven用习惯了,所以没有build工具,以及作为3rd party包查找工具,我肯定要找一个,python肯定要提供一个,我第一步找到的是Pip,easy_install好像也可以但是重复了,我就熟悉了pip就够用了。pip的安装比较简单,执行python的一个远程get.pip.py的脚本就可以(这个方式显得有些不专业不得不说,而且没有和linux apt-get, Mac brew等等结合,显得有些low).而且,pip在开发中也不是必须的,这点让人有些沮丧,说明在开发大型项目的时候,python的标准化,还没有十分完备(个人意见)。
DSC0000.png
DSC0001.png
  Run pip list will get you have already install python packages. sys.path you'll get the directory which python 3rd party packages location.
  说起来,npm和bower这种安装工具提供本地安装,但是pip没有,是让人沮丧的,npm安装默认是本地,如果全局要加-g。
  

npm install -g bower  

Python command line framework
  说到今天的主题了,一直以来,我需要一个交互式的命令行程序,动态的申请虚拟机,删除虚拟机,安装一些软件等等,我希望都通过命令行来实现,而不是通过制作一个web端(以前,我一直是怎么做的)。所以我找到了python,找到了一些不错的,激动人心的python框架。
  http://docs.python-guide.org/en/latest/scenarios/cli/
  这篇文章中提到了几个。

Clint
  没有好的文档,确实,这点比较致命,而且没法知道框架的全貌,不过几个功能还是不错的。https://github.com/kennethreitz/clint Github地址,因为是开发中,所以不完善是必须的,可以理解了。


  • 可以打印color,有前置的提示符
  

from clint.textui import puts, indent, colored  

  
puts(colored.red('this is a text'))
  

  
with indent(4,">>> "):
  puts(colored.yellow("hello?"))
  

  
puts(colored.green('this is the end'))
  

DSC0002.png


  • 处理输入参数
  

from clint import arguments  
args = arguments.Args()
  
print args.get(0)
  

  Run python test.py 123 will print 123.


  • 处理输入流
  

from clint import piped_in  
if __name__ == '__main__':
  in_data = piped_in()
  print in_data
  

  Run python test.py < 1.txt will print 1.txt content.


  • 进度条打印
  

from time import sleep  
from random import random
  
from clint.textui import progress
  

  
for i in progress.bar(range(100)):
  sleep(random()*0.2)
  

DSC0003.png


  • 提示框
  

from clint.textui import prompt,puts,colored,validators  
name = prompt.query("What's your name?")
  
puts(name)
  
language = prompt.query("Your favorite tool (optional)?", validators=[])
  
puts(language)
  

Click
  http://click.pocoo.org/3/ 更成熟的工具,研究一些高级功能。
  格式化打印?
  循环的询问?
  ……

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-146585-1-1.html 上篇帖子: Python学习笔记3-字符串 下篇帖子: Python Generators(生成器)--yield
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表