Time of Update: 2017-01-19
系統管理員通常從svn/git中檢索代碼,部署網站後通常首先會產生該網站所有檔案的MD5值,如果上線後網站頁面內容被篡改(如掛馬)等,可以比對之前產生MD5值快速尋找去那些檔案被更改,為了使系統管理員第一時間發現,可結合crontab或nagios等工具。程式測試如下:# python check_change.py Usage: python check_change.py update /home/wwwroot python check_change.py check
Time of Update: 2017-01-19
之前有寫利用md5方式來做差異備份,但是這種md5方式來寫存在以下問題:•md5sum擷取有些軟串連的MD5值存在問題 •不支援對空目錄進行備份,因為md5sum無法擷取空目錄的md5值 •許可權的修改md5sum無法判斷 解決方案:利用檔案的mtime ctimemtime(Modified time)是在寫入檔案時隨檔案內容的更改而更改的ctime(Create
Time of Update: 2017-01-19
我從Stephen A. Goss那讀到關於了《Python 3正在毀滅Python》。這篇文章有不少精彩的論點,但我卻並不認為Python 3是在毀滅Python,也不認為整個局面對Python一點也不利。但是正如那些比較俗氣的格言所說,也許每一次危機也意味著一次機遇。也許Python 3能振興Python。顯然,麻煩的不僅僅是Python 2到Python
Time of Update: 2017-01-19
Python 3毫不費力地成為發生在Python社區裡最糟糕的事。我還記得第一次使用Python的時候,我還在花大量時間在C++這塊上,而Python就像是我的一次開光。我可以開啟文字編輯器用幾秒鐘或者幾分鐘寫出一個可以工作的程式,而不是用幾小時或幾天。我記得Python 2.5出來的時候,帶來了一大堆嶄新的簡潔的語言特性。我愛Python,但是我承認它有弱點,但是沒關係,所有程式設計語言都有。它強大的地方使其變得有趣。Python 3相比Python
Time of Update: 2017-01-19
最近我用Python做了一個國際象棋程式並把代碼發布在Github上了。這個代碼不到1000行,大概20%用來實現AI。在這篇文章中我會介紹這個AI如何工作,每一個部分做什麼,它為什麼能那樣工作起來。你可以直接通讀本文,或者去下載代碼,邊讀邊看代碼。雖然去看看其他檔案中有什麼AI依賴的類也可能有協助,但是AI部分全都在AI.py檔案中。AI
Time of Update: 2017-01-19
List 是 Python 中常用的資料類型,它一個有序集合,即其中的元素始終保持著初始時的定義的順序(除非你對它們進行排序或其他修改操作)。在Python中,向List添加元素,方法有如下4種方法(append(),extend(),insert(), +加號)1. append()
Time of Update: 2017-01-19
建立列表複製代碼 代碼如下:sample_list = ['a',1,('a','b')]Python 列表操作複製代碼 代碼如下:sample_list = ['a','b',0,1,3]得到列表中的某一個值複製代碼 代碼如下:value_start = sample_list[0]end_value = sample_list[-1]刪除列表的第一個值複製代碼 代碼如下:del sample_list[0]在列表中插入一個值複製代碼 代碼如下:sample_list[0:0] =
Time of Update: 2017-01-19
回顧一下已有的戰果:(1)串連資料庫;(2)建立指標;(3)通過指標插入記錄;(4)提交將插入結果儲存到資料庫。在互動模式中,先溫故,再知新。複製代碼 代碼如下:>>> #匯入模組>>> import MySQLdb>>> #串連資料庫>>> conn = MySQLdb.connect(host="localhost",user="root",passwd="123123",db="qiwsirtest",port=303
Time of Update: 2017-01-19
在上一講中已經串連了資料庫。就資料庫而言,串連之後就要對其操作。但是,目前那個名字叫做qiwsirtest的資料僅僅是空架子,沒有什麼可操作的,要操作它,就必須在裡面建立“表”,什麼是資料庫的表呢?下面摘抄字維基百科對資料庫表的簡要解釋,要想詳細瞭解,需要看官在找一些有關資料庫的教程和書籍來看看。在關聯式資料庫中,資料庫表是一系列二維數組的集合,用來代表和儲存資料對象之間的關係。它由縱向的列和橫向的行組成,例如一個有關作者資訊的名為 authors
Time of Update: 2017-01-19
os.path包os.path包主要用於處理字串路徑,比如'/home/zikong/doc/file.doc',提取出有用的資訊。複製代碼 代碼如下:import os.pathpath = '/home/zikong/doc/file.doc'print(os.path.basename(path)) # 查詢路徑中包含的檔案名稱print(os.path.dirname(path)) #
Time of Update: 2017-01-19
在初步瞭解Python多進程之後,我們可以繼續探索multiprocessing包中更加進階的工具。這些工具可以讓我們更加便利地實現多進程。進程池進程池 (Process Pool)可以建立多個進程。這些進程就像是隨時待命計程車兵,準備執行任務(程式)。一個進程池中可以容納多個待命計程車兵。“三個進程的進程池”比如下面的程式:複製代碼 代碼如下:import multiprocessing as muldef f(x): return x**2pool =
Time of Update: 2017-01-19
我們已經在Python運算中看到Python最基本的數學運算功能。此外,math包補充了更多的函數。當然,如果想要更加進階的數學功能,可以考慮選擇標準庫之外的numpy和scipy項目,它們不但支援數組和矩陣運算,還有豐富的數學和物理方程可供使用。此外,random包可以用來產生隨機數。隨機數不僅可以用於數學用途,還經常被嵌入到演算法中,用以提高演算法效率,並提高程式的安全性。math包math包主要處理數學相關的運算。math包定義了兩個常數:複製代碼
Time of Update: 2017-01-19
在迴圈對象和函數對象中,我們瞭解了迴圈器(iterator)的功能。迴圈器是對象的容器,包含有多個對象。通過調用迴圈器的next()方法 (__next__()方法,在Python 3.x中),迴圈器將依次返回一個對象。直到所有的對象遍曆窮盡,迴圈器將舉出StopIteration錯誤。在for i in iterator結構中,迴圈器每次返回的對象將賦予給i,直到迴圈結束。使用iter()內建函數,我們可以將諸如表、字典等容器變為迴圈器。比如:複製代碼 代碼如下:for i in iter([
Time of Update: 2017-01-19
Python內建一個輕量級的關係型資料庫SQLite。這一資料庫使用SQL語言。SQLite作為後端資料庫,可以搭配Python建網站,或者製作有資料存放區需求的工具。SQLite還在其它領域有廣泛的應用,比如HTML5和移動端。Python標準庫中的sqlite3提供該資料庫的介面。我將建立一個簡單的關係型資料庫,為一個書店儲存書的分類和價格。資料庫中包含兩個表:category用於記錄分類,book用於記錄某個書的資訊。一本書歸屬於某一個分類,因此book有一個外鍵(foreign key)
Time of Update: 2017-01-19
本函數可以使用參數real +
Time of Update: 2017-01-19
fileinput模組提供處理一個或多個文字檔的功能,可以通過使用for迴圈來讀取一個或多個文字檔的所有行。它的工作方式和readlines很類似,不同點在於它不是將全部的行讀到列表中而是建立了一個xreadlines對象。下面是fileinput模組中的常用函數:input() #返回能夠用於for迴圈遍曆的對象filename() #返回當前檔案的名稱lineno() #返回當前已經讀取的行的數量(或者序號)filelineno()
Time of Update: 2017-01-19
一組有序項目的集合可變的資料類型【可進行增刪改查】列表中可以包含任何資料類型,也可包含另一個列表【可任意組合嵌套】列表是以方括弧“[]”包圍的資料集合,不同成員以“,”分隔列表可通過序號訪問其中成員定義>>> l = [] #空列表>>> l = [1,2,3]>>> l = [1,2,3,['a','b']]>>> l = list('linuxeye')>>> l['l', 'i', 'n', 'u',
Time of Update: 2017-01-19
Python字典的建立方法一:>>> blank_dict = {}>>> product_dict = {'MAC':8000,'Iphone':5000, 'ipad':4000, 'mp3': 300}>>> product_dict{'ipad': 4000, 'MAC': 8000, 'Iphone': 5000, 'mp3': 300}>>> blank_dict,product_dict({}, {'ipad'
Time of Update: 2017-01-19
Python序列化的概念很簡單。記憶體裡面有一個資料結構,你希望將它儲存下來,重用,或者發送給其他人。你會怎麼做?這取決於你想要怎麼儲存,怎麼重用,發送給誰。很多遊戲允許你在退出的時候儲存進度,然後你再次啟動的時候回到上次退出的地方。(實際上,很多非遊戲程式也會這麼幹)在這種情況下,一個捕獲了當前進度的資料結構需要在你退出的時候儲存到硬碟上,接著在你重新啟動的時候從硬碟上載入進來。Python標準庫提供pickle和cPickle模組。cPickle是用C編碼的,在運行效率上比pickle要高,
Time of Update: 2017-01-19
os.getcwd() 擷取當前工作目錄,即當前python指令碼工作的目錄路徑 os.chdir("dirname") 改變當前指令碼工作目錄;相當於shell下cdos.curdir 返回目前的目錄: ('.')os.pardir 擷取目前的目錄的父目錄字元串名:('..')os.makedirs('dirname1/dirname2') 可產生多層遞迴目錄os.removedirs('dirname1')