Python command line 交互式框架

Python做爲一種腳本語言,做爲Perl的對手,在操做文件系統上面頗有一套, 因爲語言的推廣,在web方面也出現了不少Python的框架,最有名的莫過於Django了,其實不太熟悉Django,可是近些年來Python在web方面沒有太多的進展,反而back end javascript,例如nodejs的崛起,帶動了javascript做爲一個後端語言風潮,和之前的PHP,以及基於Java的J2ee, SpringMVC(曾經佔有40%的web框架)競爭,我的以爲Python並不佔優點。javascript

Python須要找到本身的發展方向,無疑Shellscript做爲linux孃胎裏帶來的語言,其蹩腳性顯而易見,而Perl is ugly, everyone knows。因此python能夠在Command line這條路上多走一些。java

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

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的標準化,尚未十分完備(我的意見)。

python

Run pip list will get you have already install python packages. sys.path you'll get the directory which python 3rd party packages location.linux

提及來,npm和bower這種安裝工具提供本地安裝,可是pip沒有,是讓人沮喪的,npm安裝默認是本地,若是全局要加-g。ios

npm install -g bower

Python command line framework

說到今天的主題了,一直以來,我須要一個交互式的命令行程序,動態的申請虛擬機,刪除虛擬機,安裝一些軟件等等,我但願都經過命令行來實現,而不是經過製做一個web端(之前,我一直是怎麼作的)。因此我找到了python,找到了一些不錯的,激動人心的python框架。
http://docs.python-guide.org/en/latest/scenarios/cli/
這篇文章中提到了幾個。git

Clint

沒有好的文檔,確實,這點比較致命,並且無法知道框架的全貌,不過幾個功能仍是不錯的。https://github.com/kennethreitz/clint Github地址,由於是開發中,因此不完善是必須的,能夠理解了。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'))

  • 處理輸入參數
from clint import arguments
args = arguments.Args()
print args.get(0)

Run python test.py 123 will print 123.web

  • 處理輸入流
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.npm

  • 進度條打印
from time import sleep
from random import random
from clint.textui import progress

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

  • 提示框
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/ 更成熟的工具,研究一些高級功能。 格式化打印? 循環的詢問? ……

相關文章
相關標籤/搜索