Time of Update: 2016-06-16
對web伺服器做健全狀態檢查,一般我們都是用curl庫(不管是php,perl的還是shell的),大致的方法一致:複製代碼 代碼如下:curl -I -s www.qq.com |head -1|awk '{ health = $2=="200"?"server is ok":"server is bad"}END{print health}'server is
Time of Update: 2016-06-16
上篇文章簡單介紹了python中描述器(Descriptor)的概念和使用,有心的同學估計已經Get√了該技能。本篇文章通過一個Descriptor的使用情境再次給出一個案例,讓不瞭解情況的同學可以更容易理解。先說說decorator這兩個單詞確實是有些相似,同時在使用中也是形影不離。這也給人造成了理解上的困難,說裝飾器和描述器到底是怎麼回事,為什麼非得用一個@符號再加上描述器才行。很多文章也都把這倆結合著講,我自己看完之後都會覺得很繞。其實學習一個知識點,和做項目開發一個功能是一樣的。在功能拆
Time of Update: 2016-06-16
本文執行個體講述了Python顯示進度條的方法,是Python程式設計中非常實用的技巧。分享給大家供大家參考。具體方法如下:首先,進度條和一般的print區別在哪裡呢?答案就是print會輸出一個\n,也就是分行符號,這樣游標移動到了下一行行首,接著輸出,之前已經通過stdout輸出的東西依舊保留,而且保證我們在下面看到最新的輸出結果。進度條不然,我們必須再原地輸出才能保證他是一個進度條,否則換行了怎麼還叫進度條?最簡單的辦法就是,再輸出完畢後,把游標移動到行首,繼續在那裡輸出更長的進度條即可實
Time of Update: 2016-06-16
Python 的多線程有兩種實現方法:函數,線程類1.函數調用 thread 模組中的 start_new_thread() 函數來建立線程,以線程函數的形式告訴線程該做什麼複製代碼 代碼如下:# -*- coding: utf-8 -*-import threaddef f(name): #定義線程函數 print "this is " + name if __name__ == '__main__': thread.start_new_thread(f, ("thread1",))
Time of Update: 2016-06-16
對list的操作合并list《有容乃大的list(1)》中,對list的操作提到了list.append(x),也就是將某個元素x 追加到已知的一個list後邊。除了將元素追加到list中,還能夠將兩個list合并,或者說將一個list追加到另外一個list中。按照前文的慣例,還是首先看官方文檔中的描述:list.extend(L)Extend the list by appending all the items in the given list; equivalent to
Time of Update: 2016-06-16
相同點都屬於序列類型的資料所謂序列類型的資料,就是說它的每一個元素都可以通過指定一個編號,行話叫做“位移量”的方式得到,而要想一次得到多個元素,可以使用切片。位移量從0開始,總元素數減1結束。例如:>>> welcome_str = "Welcome you">>> welcome_str[0]'W'>>> welcome_str[1]'e'>>> welcome_str[len(welcome_str)-1]'u'>>> welcome_str[:4]'Welc'>>> a =
Time of Update: 2016-06-16
最近有個需求就是頁面上執行shell命令,第一想到的就是os.system,複製代碼 代碼如下:os.system('cat /proc/cpuinfo')但是發現頁面上列印的命令執行結果 0或者1,當然不滿足需求了。嘗試第二種方案 os.popen()複製代碼 代碼如下:output = os.popen('cat /proc/cpuinfo')print output.read()通過 os.popen() 返回的是 file read 的對象,對其進行讀取 read()
Time of Update: 2016-06-16
本文執行個體講述了Python專用方法與迭代機制,分享給大家供大家參考之用。具體分析如下:眾所周知,Python 設計哲學是“優雅”、“明確”、“簡單”,對於一件事只用一種最好的方法來做,而這種優雅在於背後很自然的隱藏了很多細節。比如對一些對象直接用for 語句來迭代,一些全域函數可以作用於很多具有共同特徵的對象,還有產生器裝飾器自省等特性。其中很多實現都是藉助 Python 內部專用方法,而對外則使用統一的全域函數來進行操作,在配合一些文法糖,使得 Python
Time of Update: 2016-06-16
本文以執行個體形式分析了Python多進程編程技術,有助於進一步Python程式設計技巧。分享給大家供大家參考。具體分析如下:一般來說,由於Python的線程有些限制,例如多線程不能充分利用多核CPU等問題,因此在Python中我們更傾向使用多進程。但在做不阻塞的非同步UI等情境,我們也會使用多線程。本篇文章主要探討Python多進程的問題。Python在2.6引入了多進程的機制,並提供了豐富的組件及api以方便編寫並發應用。multiprocessing包的組件Process, Queue,
Time of Update: 2016-06-16
字典,這個東西你現在還用嗎?隨著網路的發展,用的人越來越少了。不少人習慣於在網上搜尋,不僅有web版,乃至於已經有手機版的各種字典了。我曾經用過一本小小的《新華字典》。《新華字典》是中國第一部現代漢語字典。最早的名字叫《伍記小字典》,但未能編纂完成。自1953年,開始重編,其凡例完全採用《伍記小字典》。從1953年開始出版,經過反覆修訂,但是以1957年商務印書館出版的《新華字典》作為第一版。原由新華辭書社編寫,1956年併入中科院語言研究所(現中國社科院語言研究所)詞典編輯室。新華字典由商務印
Time of Update: 2016-06-16
前段時間有個需求是要求查一段時間的dns上的網域名稱訪問次數排行(top100),沒辦法,只好慢慢的去解析dns日誌唄,正好學習了python,拿來練練手。1.未經處理資料分析:首先看下未經處理資料檔案,即dns日誌內容,下面是抽取的幾條有代表性的日誌,2×8.2×1.2x.1×5 這種中間的x是相應的數字被我抹去了。複製代碼 代碼如下:13-08-30 03:11:34,226 INFO : queries: –
Time of Update: 2016-06-16
Gittle是一個進階純python git 庫。構建在dulwich之上,提供了大部分的低層機制。Install itpip install gittleExamples :Clone a repositoryfrom gittle import Gittle repo_path = '/tmp/gittle_bare'repo_url = 'git://github.com/FriendCode/gittle.git' repo = Gittle.clone(repo_url,
Time of Update: 2016-06-16
通過exec可以執行動態Python代碼,類似Javascript的eval功能;而Python中的eval函數可以計算Python運算式,並返回結果(exec不返回結果,print(eval("…"))列印None);複製代碼 代碼如下: >>> exec("print(\"hello, world\")")hello, world>>> a = 1>>> exec("a = 2")>>> a2這裡有個scope(命名空間,範圍)的概念,為了不破壞現在的scope,可以建立一個scope(
Time of Update: 2016-06-16
在Python中函數可以作為參數進行傳遞,而也可以賦值給其他變數(類似Javascript,或者C/C++中的函數指標);類似Javascript,Python支援函數嵌套,Javascript嵌套函數的應用模式對Python適用;複製代碼 代碼如下:>>> def multiplier(factor):... def multiple(number):... return number * factor... return multiple...>>>>>> multiplier(3)(3)9
Time of Update: 2016-06-16
凍結的集合前面一節講述了集合的基本概念,注意,那裡所涉及到的集合都是可原處修改的集合。還有一種集合,不能在原處修改。這種集合的建立方法是:>>> f_set = frozenset("qiwsir") #看這個名字就知道了frozen,凍結的set>>> f_setfrozenset(['q', 'i', 's', 'r', 'w'])>>> f_set.add("python") #報錯Traceback (most recent call last): File "",
Time of Update: 2016-06-16
Python使用中物件導向的語言,支援繼承、多態;定義一個Person類:複製代碼 代碼如下:>>> class Person:... def sayHello(self):... print('hello')...>>> Person.sayHello(None)hello>>> Person().sayHello()hello 可以修改Person的類方法複製代碼 代碼如下:>>> def hack_sayHello(obj):... print('...hello')...>>>>>>
Time of Update: 2016-06-16
下面的表格中列出了已經學習過的資料類型,也是python的核心資料類型之一部分,這些都被稱之為內建對象。對象,就是你面對的所有東西都是對象,看官要逐漸熟悉這個稱呼。所有的資料類型,就是一種對象。英文單詞是object,直接的漢語意思是物體,這就好像我們在現實中一樣,把很多我們看到和用到的都可以統稱為“東西”一樣。“東西”就是“對象”,就是object。在編程中,那個所謂物件導向,也可以說成“面向東西”,是嗎?容易有歧義吧。 物件類型 舉例
Time of Update: 2016-06-16
最近開始研究Python的並行開發技術,包括多線程,多進程,協程等。逐步整理了網上的一些資料,今天整理了一下greenlet相關的資料。並發處理的技術背景並行化處理目前很受重視, 因為在很多時候,並行計算能大大的提高系統輸送量,尤其在現在多核多處理器的時代, 所以像lisp這種古老的語言又被人們重新拿了起來, 函數式編程也越來越流行。 介紹一個python的平行處理的一個庫: greenlet。 python 有一個非常有名的庫叫做 stackless ,用來做並發處理,
Time of Update: 2016-06-16
本文執行個體講述了Python中實現兩個字典(dict)合并的方法,分享給大家供大家參考。具體方法如下:現有兩個字典dict如下:dict1={1:[1,11,111],2:[2,22,222]}dict2={3:[3,33,333],4:[4,44,444]}合并兩個字典得到類似:{1:[1,11,111],2:[2,22,222],3:[3,33,333],4:[4,44,444]}方法1:dictMerged1=dict(dict1.items()+dict2.items())方法2:di
Time of Update: 2016-06-16
在《永遠強大的函數》那一講中,老齊我已經向看官們簡述了一下變數,之後我們就一直在使用變數,每次使用變數,都要有一個操作,就是賦值。本講再次提及這個兩個事情,就是要讓看官對變數和賦值有一個知其然和知其所以然的認識。當然,最後能不能達到此目的,主要看我是不是說的通俗易懂了。如果您沒有明白,就說明我說的還不夠好,可以聯絡我,我再為您效勞。變數和對象在《learning python》那本書裡面,作者對變數、對象和引用的關係闡述的非常明了。我這裡在很大程度上是受他的啟發。感謝作者Mark