Python,python基礎教程
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/python2,import os3,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標準庫確實很龐大。它可以協助處理各種工作,包括Regex、文檔產生、單元測試、線程、資料庫、網頁瀏覽器、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 InterfaceAPI),能方便進行系統維護和管理,Linux下標誌性語言之一,是很多系統管理員理想的編程工具 。
圖形處理:有PIL、Tkinter等圖形庫支援,能方便進行圖形處理。
數學處理:NumPy擴充提供大量與許多標準數學庫的介面。
文本處理:python提供的re模組能支援Regex,還提供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模組封裝了“OpenGLAPI”,能進行二維和三維影像處理。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代碼編輯提供一定的支援,比如代碼自動著色、注釋快速鍵等,但是否夠得上整合式開發環境的水平,尚有待評估。