Time of Update: 2016-10-18
關於PythonPython是一種解釋性、物件導向並具有動態語義的進階程式語言。它內建了進階的資料結構,結合了動態類型和動態綁定的優點,這使得它在快速應用開發中非常有吸引力,並且可作為指令碼或膠水語言來串連現有的組件或服務。Python支援模組和包,從而鼓勵了程式的模組化和代碼重用。關於這篇文章Python簡單易學的文法可能會使Python開發人員–尤其是那些編程的初學者–忽視了它的一些微妙的地方並低估了這門語言的能力。有鑒於此,本文列出了一個“10強”名單,枚舉了甚至是進階Python開發人員
Time of Update: 2016-10-18
python 開啟瀏覽器,可以做簡單的刷網頁的小程式 and 其他有想象力的程式。不過僅供學習,勿用非法用途。python的webbrowser模組支援對瀏覽器進行一些操作主要有以下三個方法:webbrowser.open(url, new=0, autoraise=True)webbrowser.open_new(url)webbrowser.open_new_tab(url)
Time of Update: 2016-10-18
我們通常會遇到這樣的需求:通過C++或其他較底層的語言實現了一個複雜的功能模組,需要搭建一個基於Web的Demo,方法查詢資料。由於Python語言的強大和簡潔,其用來搭建Demo非常合適,Flask架構和jinja2模組功能為python提供了方便的web開發能力。同時,python能夠很方便的同其他語言的代碼互動。因此我們選擇python作為開發Demo的工具。假設我們需要調用的模組(提供底層服務)通過標準輸入迴圈讀入資料,處理完畢後把結果寫出到標出輸出,這樣的情境在Linux環境下很常見,
Time of Update: 2016-10-18
最近由於工作的需要開始開發一些Python的東西,由於之前一直在使用Javascript,所以會不自覺的使用一些Javascript的概念,文法什麼的,經常掉到坑裡。我覺得對於從Javascript轉到Python,有必要總結一下它們之間的差異。基本概念Python和Javascript都是指令碼語言,所以它們有很多共同的特性,都需要解譯器來運行,都是動態類型,都支援自動記憶體管理,都可以調用eval()來執行指令碼等等指令碼語言所共有的特性。然而它們也有很大的區別,Javascript這設計之
Time of Update: 2016-10-18
Python擷取伺服器的廠商和型號資訊,在RHEHL6下,需要系統預裝python-dmidecode這個包(貌似預設就已經裝過了)指令碼內容如下[root@linuxidc tmp]# cat test.py#!/usr/bin/env pythonimport dmidecodeinfo=dmidecode.system()info_keys=info.keys()for i in range(len(info_keys)): if
Time of Update: 2016-10-18
#!/usr/bin/pythonimport sys,time,json,loggingimport Queue, threading, datetimefrom lib.base.daemon import Daemonfrom lib.queue.httpsqs.HttpsqsClient import HttpsqsClientfrom lib.db.DbMongodb import DbMongodblogging.basicConfig(level=logging.DEBUG,
Time of Update: 2016-10-18
SQLite是一個包含在C庫中的輕量級資料庫。它並不需要獨立的維護進程,並且允許使用非標準變體(nonstandard variant)的SQL查詢語句來訪問資料庫。一些應用可是使用SQLite儲存內部資料。它也可以在構建應用原型的時候使用,以便於以後轉移到更大型的資料庫。SQLite的主要優點:1.
Time of Update: 2016-10-18
在使用Python編寫的應用的過程中,有時會遇到多個檔案之間傳遞同一個全域變數的情況。檔案1:globalvar.py#!/usr/bin/env python2.7 class GlobalVar: db_handle = None mq_client = None def set_db_handle(db): GlobalVar.db_handle = db def get_db_handle(): return GlobalVar.db_handle def
Time of Update: 2016-10-18
在lua中,一直用lua作為config檔案,或承載資料的檔案 - 好處是lua本身就很好閱讀,然後無需額外寫解析的代碼,還支援在configure檔案中讀環境變數,條件判斷等。在lua中通過loadfile, setfenv實現)python:cat config.pybar = 10foo=100cat python_as_config.py:ns = {}execfile('config.py', ns)print
Time of Update: 2016-10-18
在python2.x中,從object繼承得來的類稱為新式類(如class A(object))不從object繼承得來的類稱為經典類(如class A())新式類跟經典類的差別主要是以下幾點: 1. 新式類對象可以直接通過__class__屬性擷取自身類型:type 2. 繼承搜尋的順序發生了改變,經典類多繼承時屬性搜尋順序: 先深入繼承樹左側,再返回,開始找右側(即深度優先搜尋);新式類多繼承屬性搜尋順序: 先水平搜尋,然後再向上移動例子:經典類: 搜尋順序是(D,B,A,C)>>>
Time of Update: 2016-10-18
cmp( x, y):比較2個對象,前者小於後者返回-1,相等則返回0,大於後者返回1.Python的cmp比較函數比較原理Python的cmp函數可以比較同類型之間,或者不同資料類型之間。然後根據Python的cmp比較函數的傳回值來判定比較大小。>>> list1, list2 = [123, 'xyz'], [456, 'abc']>>> cmp(list1, list2)-1>>> cmp(list2, list1)1>>> list3 = list2 +
Time of Update: 2016-10-18
作為一個概念而言,Regex對於Python來說並不是專屬的。但是,Python中的Regex在實際使用過程中還是有一些細小的差別。本文是一系列關於PythonRegex文章的其中一部分。在這個系列的第一篇文章中,我們將重點討論如何使用Python中的Regex並突出Python中一些專屬的特性。我們將介紹Python中對字串進行搜尋和尋找的一些方法。然後我們講討論如何使用分組來處理我們尋找到的匹配對象的子項。我們有興趣使用的Python中Regex的模組通常叫做‘re'。>>>
Time of Update: 2016-10-18
一個簡易的日誌監控的指令碼,功能如下:1.windows環境2.當匹配日誌關鍵字時會發出聲音,匹配的關鍵字不同,播放的聲音不同3.能做到即時響應注意:是在win環境下哦直接上代碼吧#!/usr/bin/env python# encoding: utf-8 """MonitorLog.py Usage: MonitorLog.py ...Monitor the log file -f log file-h help info python MonitorLog.py -f
Time of Update: 2016-10-18
1.readline 情境f0=file("readline.txt",r)while true for line in f0.readline()if not line: breakpass #do something readline 的用法,速度是fileinput的3倍左右,每秒3-4萬行,好處是 一行行讀 ,不佔記憶體,適合處理比較大的檔案,比如超過記憶體大小的檔案2.readlines 情境f1=open("readline.txt","r")for line in f1.
Time of Update: 2016-10-18
python下讀取一個頁面的資料可以通過urllib2輕鬆實現請求import urllib2print urllib2.urlopen('http://www.pythontab.com').read() 涉及到頁面的POST請求操作的話需要提供頭資訊,提交的post資料和請求頁面。其中的post資料需要urllib.encode()一下,其實就是將字典轉換成“data1=value1&data2=value2”的格式。import urllibimport urllib2
Time of Update: 2016-10-18
目前我常常使用的分詞有結巴分詞、NLPIR分詞等等最近是在使用結巴分詞,稍微做一下推薦,還是蠻好用的。一、結巴分詞簡介利用結巴分詞進行中文分詞,基本實現原理有三:基於Trie樹結構實現高效的詞圖掃描,產生句子中漢字所有可能成詞情況所構成的有向非循環圖(DAG)採用了動態規劃尋找最大機率路徑, 找出基於詞頻的最大切分組合對於未登入詞,採用了基於漢字成詞能力的HMM模型,使用了Viterbi演算法二、安裝及使用(Linux)1.下載工具包,解壓後進入目錄下,運行:python setup.py
Time of Update: 2016-10-18
解包就是把序列或映射中每個元素單獨提取出來,序列解包的一種簡單用法就是把首個或前幾個元素與後面幾個元素分別提取出來,例如:first, seconde, *rest = sequence如果sequence裡至少有三個元素,那麼執行完上述代碼後,first == sequence[0], second == sequence[0], rest == sequence[2:]。函數接收不確定參數當函數的參數不確定時,可以使用*args 和**kwargs,*args
Time of Update: 2016-10-18
for e in collections: pass在for 迴圈裡, 最後一個對象e一直存在在上下文中。就是在迴圈外面,接下來對e的引用仍然有效。這裡有個問題容易被忽略,如果在迴圈之前已經有一個同名對象存在,這個對象是被覆蓋的。如果在有代碼感知的IDE中, IDE會提示變數是“被重新聲明的”, 但運行時卻不會出錯。 for迴圈不是閉包,可以使用dis模組分解以下代碼可以看到:x = 5for x in range(10): passprint
Time of Update: 2016-10-18
總結了一下常見集中排序的演算法歸併排序歸併排序也稱合并排序,是分治法的典型應用。分治思想是將每個問題分解成個個小問題,將每個小問題解決,然後合并。具體的歸併排序就是,將一組無序數按n/2遞迴分解成只有一個元素的子項,一個元素就是已經排好序的了。然後將這些有序的子項目進行合并。合并的過程就是 對 兩個已經排好序的子序列,先選取兩個子序列中最小的元素進行比較,選取兩個元素中最小的那個子序列並將其從子序列中去掉添加到最終的結果集中,直到兩個子序列歸併完成。代碼如下:#!/usr/bin/python
Time of Update: 2016-10-18
1.基本的讀取設定檔-read(filename) 直接讀取ini檔案內容-sections() 得到所有的section,並以列表的形式返回-options(section) 得到該section的所有option-items(section) 得到該section的所有索引值對-get(section,option) 得到section中option的值,返回為string類型-getint(section,option)