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
我是用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
說到今天的主題了,一直以來,我須要一個交互式的命令行程序,動態的申請虛擬機,刪除虛擬機,安裝一些軟件等等,我但願都經過命令行來實現,而不是經過製做一個web端(之前,我一直是怎麼作的)。因此我找到了python,找到了一些不錯的,激動人心的python框架。
http://docs.python-guide.org/en/latest/scenarios/cli/
這篇文章中提到了幾個。git
沒有好的文檔,確實,這點比較致命,並且無法知道框架的全貌,不過幾個功能仍是不錯的。https://github.com/kennethreitz/clint Github地址,由於是開發中,因此不完善是必須的,能夠理解了。github
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)
http://click.pocoo.org/3/ 更成熟的工具,研究一些高級功能。 格式化打印? 循環的詢問? ……