1. 程式人生 > >Python ----腳本CGI、特點、應用、開發環境

Python ----腳本CGI、特點、應用、開發環境

python spring mvc+my batis dubbo+zookeerper kafka restful redis分布式緩存

CGI


CGI 目前由NCSA維護,NCSA定義CGI如下:

CGI(Common Gateway Interface),通用網關接口,它是一段程序,運行在服務器上如:HTTP服務器,提供同客戶端HTML頁面的接口。

CGI程序可以是Python腳本、Perl腳本、Shell腳本、C或者C++程序等。

服務器

在你進行CGI編程前,確保您的Web服務器支持CGI及已經配置了CGI的處理程序。

所有的HTTP服務器執行CGI程序都保存在一個預先配置的目錄。這個目錄被稱為CGI目錄,並按照慣例,它被命名為/var/www/cgi-bin目錄。

CGI文件的擴展名為.cgi,python也可以使用.py擴展名。

默認情況下,Linux服務器配置運行的cgi-bin目錄中為/var/www。

如果想指定的其他運行CGI腳本的目錄,可以修改httpd.conf配置文件,如下所示:


/1、<Directory"/var/www/cgi-bin"> /2、Allow Override None

/3、Options ExecCGI

/4、Order allow,deny

/5、Allow from all /6、</Directory> /7、<Directory"/var/www/cgi-bin"> /8、Options All /9、</Directory>

程序

使用Python創建第一個CGI程序,文件名為hello.py,文件位於/var/www/cgi-bin目錄中,內容如下,修改文件的權限為755:


1、#!/usr/bin/env python

2、print("Content-type:text/html\r\n\r\n")

3、print("</html>") print("<html>")

4、print("<head>") 5、print("") 6、print("</head>")

7、print("<body>")

8、print("<h2>Hello World! This is my first CGI program")

9、print("</body>")

10、print("</html>")

以上程序在瀏覽器訪問顯示結果如下:

1、 Hello World! This is my first CGI program

這個的hello.py腳本是一個簡單的Python腳本,腳本第一的輸出內容"Content-type:text/html\r\n\r\n"發送到瀏覽器並告知瀏覽器顯示的內容類型為"text/html"。

環境變量

所有的CGI程序都接收以下的環境變量,這些變量在CGI程序中發揮了重要的作用:
技術分享

以下是一個簡單的CGI腳本輸出CGI的環境變量:

1,#!/usr/bin/python 2,import os 3,print"Content-type:text/html\r\n\r\n" 4,print"Environment" 5,for param in os.environ.keys(): 6,print"%20s:%s<\br>" %(param,os.environ[param])

特點

優點

簡單:Python是一種代表簡單主義思想的語言。閱讀一個良好的Python程序就感覺像是在讀英語一樣。它使你能夠專註於解決問題而不是去搞明白語言本身。

易學:Python極其容易上手,因為Python有極其簡單的說明文檔 。

速度快:Python 的底層是用 C 語言寫的,很多標準庫和第三方庫也都是用 C 寫的,運行速度非常快。

免費、開源:Python是FLOSS(自由/開放源碼軟件)之一。使用者可以自由地發布這個軟件的拷貝、閱讀它的源代碼、對它做改動、把它的一部分用於新的自由軟件中。FLOSS是基於一個團體分享知識的概念。

高層語言:用Python語言編寫程序的時候無需考慮諸如如何管理你的程序使用的內存一類的底層細節。

可移植性:由於它的開源本質,Python已經被移植在許多平臺上(經過改動使它能夠工作在不同平臺上)。這些平臺包括Linux、Windows、FreeBSD、Macintosh、Solaris、OS/2、Amiga、AROS、AS/400、BeOS、OS/390、z/OS、Palm OS、QNX、VMS、Psion、Acom RISC OS、VxWorks、PlayStation、Sharp Zaurus、Windows CE、PocketPC、Symbian以及Google基於linux開發的android平臺。

解釋性:一個用編譯性語言比如C或C++寫的程序可以從源文件(即C或C++語言)轉換到一個你的計算機使用的語言(二進制代碼,即0和1)。這個過程通過編譯器和不同的標記、選項完成。

運行程序的時候,連接/轉載器軟件把你的程序從硬盤復制到內存中並且運行。而Python語言寫的程序不需要編譯成二進制代碼。你可以直接從源代碼運行 程序。

在計算機內部,Python解釋器把源代碼轉換成稱為字節碼的中間形式,然後再把它翻譯成計算機使用的機器語言並運行。這使得使用Python更加簡單。也使得Python程序更加易於移植。

面向對象:Python既支持面向過程的編程也支持面向對象的編程。在“面向過程”的語言中,程序是由過程或僅僅是可重用代碼的函數構建起來的。在“面向對象”的語言中,程序是由數據和功能組合而成的對象構建起來的。

可擴展性:如果需要一段關鍵代碼運行得更快或者希望某些算法不公開,可以部分程序用C或C++編寫,然後在Python程序中使用它們。

可嵌入性:可以把Python嵌入C/C++程序,從而向程序用戶提供腳本功能。

豐富的庫:Python標準庫確實很龐大。它可以幫助處理各種工作,包括正則表達式、文檔生成、單元測試、線程、數據庫、網頁瀏覽器、CGI、FTP、電子郵件、XML、XML-RPC、HTML、WAV文件、密碼系統、GUI(圖形用戶界面)、Tk和其他與系統有關的操作。這被稱作Python的“功能齊全”理念。除了標準庫以外,還有許多其他高質量的庫,如wxPython、Twisted和Python圖像庫等等。

規範的代碼:Python采用強制縮進的方式使得代碼具有較好可讀性。而Python語言寫的程序不需要編譯成二進制代碼。

缺點

單行語句和命令行輸出問題:很多時候不能將程序連寫成一行,如import sys;for i in sys.path:print i。而perl和awk就無此限制,可以較為方便的在shell下完成簡單程序,不需要如Python一樣,必須將程序寫入一個.py文件。

獨特的語法

這也許不應該被稱為局限,但是它用縮進來區分語句關系的方式還是給很多初學者帶來了困惑。即便是很有經驗的Python程序員,也可能陷入陷阱當中。最常見的情況是tab和空格的混用會導致錯誤,而這是用肉眼無法分別的。

運行速度慢:這裏是指與C和C++相比。

應用


系統編程:提供API(Application Programming Interface應用程序編程接口),能方便進行系統維護和管理,Linux下標誌性語言之一,是很多系統管理員理想的編程工具 。

圖形處理:有PIL、Tkinter等圖形庫支持,能方便進行圖形處理。

數學處理:NumPy擴展提供大量與許多標準數學庫的接口。

文本處理:python提供的re模塊能支持正則表達式,還提供SGML,XML分析模塊,許多程序員利用python進行XML程序的開發。

數據庫編程:程序員可通過遵循Python DB-API(數據庫應用程序編程接口)規範的模塊與Microsoft SQL Server,Oracle,Sybase,DB2,MySQL、SQLite等數據庫通信。python自帶有一個Gadfly模塊,提供了一個完整的SQL環境。

網絡編程:提供豐富的模塊支持sockets編程,能方便快速地開發分布式應用程序。很多大規模軟件開發計劃例如Zope,Mnet 及BitTorrent. Google都在廣泛地使用它。

Web編程:應用的開發語言,支持最新的XML技術。

多媒體應用:Python的PyOpenGL模塊封裝了“OpenGL應用程序編程接口”,能進行二維和三維圖像處理。PyGame模塊可用於編寫遊戲軟件。

pymo引擎:PYMO全稱為python memories off,是一款運行於Symbian S60V3,Symbian3,S60V5, Symbian3, Android系統上的AVG遊戲引擎。因其基於python2.0平臺開發,並且適用於創建秋之回憶(memories off)風格的AVG遊戲,故命名為PYMO。

黑客編程:python有一個hack的庫,內置了你熟悉的或不熟悉的函數,但是缺少成就感。

用Python寫簡單爬蟲

首先,要通過urllib2這個Module獲得對應的HTML源碼。

1,import urllib2 #調用urllib2

2,url=‘http://www.baidu.com/s?wd=cloga‘ #把等號右邊的網址賦值給url

3,html=urllib2.urlopen(url).read() #html隨意取名 等號後面的動作是打開源代碼頁面,並閱讀

4,print html #打印


可以看到url的信息存儲在span標簽中,要獲取其中的信息可以用正則式。

有需要了解關於Python的技術性問題的詳細的朋友可關註

願意了解更多的可關註:mingli.com

朋友需要請加球球:二零四二八四九二三七


開發環境


●IDLE:Python內置IDE (隨python安裝包提供)

●PyCharm :詳見百度百科PyCharm,由著名的JetBrains公司開發,帶有一整套可以幫助用戶在使用Python語言開發時提高其效率的工 具,比如調試、語法高亮、Project管理、代碼跳轉、智能提示、自動完成、單元測試、版本控制。此外,該IDE提供了一些高級功能,以用於支持Django框架下的專業Web開發。

●Komodo和Komodo Edit:後者是前者的免費精簡版

●Spyder:安裝Anaconda自帶的高級IDE

●PythonWin:ActivePython或pywin32均提供該IDE,僅適用於Windows

●SPE(Stani‘s Python Editor):功能較多的自由軟件,基於wxPython

●Ulipad:功能較全的自由軟件,基於wxPython;作者是中國Python高手limodou

●WingIDE:可能是功能最全的IDE,但不是自由軟件(教育用戶和開源用戶可以申請免費key)

●Eric:基於PyQt的自由軟件,功能強大。全名是:The Eric Python IDE

●DrPython

●PyScripter:使用Delphi開發的輕量級的開源Python IDE, 支持Python2.6和3.0。

●PyPE:一個開源的跨平臺的PythonIDE。

●bpython: 類Unix操作系統下使用curses庫開發的輕量級的Python解釋器。語法提示功能。

●eclipse + pydev插件:方便調試程序

●emacs:自帶python支持,自動補全、refactor等功能需要插件支持

●Vim: 最新7.3版編譯時可以加入python支持,提供python代碼自動提示支持

●Visual Studio 2003 + VisualPython:僅適用Windows,已停止維護,功能較差

●SlickEdit

●Visual Studio 2010 + Python Tools for Visual Studio

●TextMate

●Netbeans IDE

●Sublime

●ipython

另外,諸如Notepad++、EditPlus、UltraEdit等通用的程序員文本編輯器軟件也能對Python代碼編輯提供一定的支持,比如代碼自動著色、註釋快捷鍵等,但是否夠得上集成開發環境的水平,尚有待評估。


Python ----腳本CGI、特點、應用、開發環境