Time of Update: 2018-12-06
項目中碰到了這麼一個需求:有一個record檔案,每行一個item,整個檔案大小在2G左右。根據要求,需要每天向其他系統提供100000個item,怎麼處理比較好?考慮之後覺得分區的主意不錯,先根據每片的item數對這個大檔案進行分區,然後每天投放一片即可。具體python代碼如下:View Code # -*- coding: utf-8 -*-import osimport sysimport shutilimport time# import linecacheimport
Time of Update: 2018-12-06
為了進一步規範python代碼,提高可讀性、可維護性,決定在module、class、function中儘可能的加入docstring。閑暇之餘就寫了一個sublime text 2的plugin,可以設定使用快速鍵或者context
Time of Update: 2018-12-06
轉載請註明:@小五義 http://www.cnblogs.com/xiaowuyi學慣用書:《python 網路編程基礎》作者John Goerzen第一部分底層網路學習 Python提供了訪問底層作業系統Socket介面的全部方法,需要的時候這些介面可以提供靈活而強有力的功能。(1)基本用戶端操作 在《python 網路編程基礎》一書中,作者列出了一個簡單的Python用戶端程式,具體如下:import socket,sysport
Time of Update: 2018-12-06
利用ie操作登陸馬鈴薯網,很簡單,僅做一下記錄,以備後用。# -*- coding: utf-8 -*-import win32com.client import time ie6=win32com.client.Dispatch("InternetExplorer.Application") ie6.Navigate("http://login.tudou.com/login.do?noreg=ok") ie6.Visible=0 while ie6.Busy:
Time of Update: 2018-12-06
轉載請註明:@小五義 http://www.cnblogs.com/xiaowuyi看了這一節,突然之間對python網路編程學習筆記(1)中的一些不理解的問題有了認識,至少明白了socket是怎麼回事。這裡關於socket的起源等問題就不做筆記記錄了,直接進入主題。1、建立socket建立socket對象需要搞清通訊類型和協議家族。通訊類型指明了用什麼協議來傳輸資料。協議的例子包括IPv4、IPv6、IPX\SPX、AFP。對於internet通訊,通訊類型基本上都是AF_INET(和IPv4
Time of Update: 2018-12-06
今天就為了把一個字串裡的多個換行去掉,竟然忙活了一個下午,真是讓大牛們笑話了。 事出有因,一個字串如下 ========================== XXX 手機:1XXXXXX 郵箱: XXX@XXXX.comQ
Time of Update: 2018-12-06
題目:歌星大獎賽內容:在歌星大獎賽中,有10個評委為參賽的選手打分,分數為1到100分。選手最後得分為去掉一個最高分和一個最低分後,其餘8個分數的平均值。問題分析和演算法設計:問題演算法比較簡單,主要是用到兩個知識點,一是判斷最大值和最小值,二是計算平均值。代碼如下:##@小五義
Time of Update: 2018-12-06
為了調試方便,特意將python的logging模組封裝了一下,支援同時向console和file輸出,支援記錄檔復原。(1)myloggingconfig.pyView Code # -*- coding: utf-8 -*-'''Created on 2011-8-24主要用途: 對程式中所使用的loggong模式做一般性配置@author: JerryKwan'''import loggingimport logging.handlersimport osLEVELS =
Time of Update: 2018-12-06
項目中碰到的問題,記錄如下,期望能對他人有用。def valid_XML_char_ordinal(c): """ @summary: check if the char is a valid xml character @param c: the character to be checked @see: # http://www.w3.org/TR/2008/REC-xml-20081126/#charsets @result: True/
Time of Update: 2018-12-06
最近在做一個許可權系統,期望的效果如下:許可權部分是一個二級結構, contenttype.action假定對外暴露的介面為 perms 變數,期望能通過 if perms.contentname 來判斷使用者是否擁有contentname中的任一action的許可權,通過 if perms.contentname.actionname來判斷使用者是否具有contentname下的actionname許可權。為了方便使用者使用,決定使用python的操作符重載。具體代碼如下:class
Time of Update: 2018-12-06
對於耗時很長的web操作,可以採用Ajax來提供更好的效能以及使用者體驗。對於python的web架構來說怎麼來做呢?將看到的一些資源記錄如下,以方便後續查詢使用。主要是採用pub/sub模式,也就是publish/subscribe,針對JQuery,可以採用PubNub Javascript Push
Time of Update: 2018-12-06
隨著國際化的需求越來越多,在考慮多語言的同時也不可避免的要涉及到多時區的問題。python中對多語言也就是I18N的支援要好很多,但在多時區的處理上就稍微差一些,python標準庫中雖然在datetime提供了tzinfo ,但很可惜只是一個abstract class,使用者需要自己實現tzinfo。要實現local timezone的話可以藉助time模組的time.timezone來實現,但還是比較繁瑣。很奇怪的是,python標準庫中為何不提供一個local
Time of Update: 2018-12-06
python標準庫中的xml.etree.ElementTree使用起來很方便,對於xml的操作封裝的也挺好。但有一些細節需要引起各位使用者的注意:其中xml.etree.ElementTree的find 和
Time of Update: 2018-12-06
在使用python的時候,為了提高效率,也為了避開python的GIL限制充分發揮多核的優勢,經常會使用multiprocessing模組來實現多進程處理。效率會有很大的提升,但這樣一來就引入的多進程管理的問題,比如:假定父進程設定的是啟動5個子進程,但在實際運行中因為種種原因有3個子進程異常退出,此時該怎麼辦?運行過程中想退出整個程式的運行,怎麼退出更合理,更優雅?下面的python代碼簡單展示了如何使用signal來處理multiprocessing協作。# -*- coding: utf-
Time of Update: 2018-12-06
將python的logging封裝更新了一下,目前支援同時向console,file,socket輸出,同時在config_logging或者config_logging_plus的時候先清除根logger的所有handler,避免在某些情況下的重複輸出。具體代碼如下:# -*- coding: utf-8 -*-'''Modified on 2012-11-27@summary: clear old root logger handlers when reconfig
Time of Update: 2018-12-06
非法字元在xml中的儲存一直比較討厭,其實這個非法字元並不僅僅是非可見字元,還包括xml中規定的某些特殊字元,比如<&>等。一種比較方便的處理方式是將那些非法字元採用HEX方式儲存或者base64加密後儲存,以下是兩個函數展示怎麼採用base64加密的方式妥善處理那些非法字元,既保證資料的完整性,又能保持可讀。畢竟所產生的xml不僅僅是用於機器讀取,而且很大一部分還要對人閱讀友好。其中的思路是:對於存在非法字元的字串,統一使用base64加密,在產生的xml標籤中增加base
Time of Update: 2018-12-06
一個簡單的pythonLog Service器,主要目的是搜集各python logging記錄的日誌,將其簡單匯總。源碼如下:# -*- coding: utf-8 -*-'''Created on 2012-06-14 19:50@summary: a simple logging server. use gevent and logging modules@author: JerryKwan'''import osimport pickleimport loggingimport
Time of Update: 2018-12-06
轉載請註明:@小五義 http://www.cnblogs.com/xiaowuyi題目:借書方案內容:小明有五本新書,要借給A、B、C三位小朋友,若每人每次只能借一本,則可以有多少種不同的借法。問題分析和演算法設計:本問題實際上就是一個排列問題,即求從5個中取3個進行排列的方法有多少。首先對五本書從1至5進行編號,然後使用窮舉的方法,假設三個人分別借這五本書中的一本,當三個人所借的書的編號都不相同時,就滿足題意。具體代碼: # -*- coding: cp936 -*-##@小五義 http:
Time of Update: 2018-12-06
base64模組是用來作base64編碼解碼的。這種編碼方式在電子郵件中是很常見的。它可以把不能作為文本顯示的位元據編碼為可顯示的文本資訊。編碼後的文字大小會增大1/3。這裡主要介紹一下base64的8個方法(encode, decode, encodestring, decodestring, b64encode,b64decode, urlsafe_b64decode,urlsafe_b64encode): 1、encode,decode:用來編碼和
Time of Update: 2018-12-06
方法一:用encode和decode如: 1 import os.path 2 import xlrd,sys 3 4 Filename='/home/tom/Desktop/1234.xls' 5 if not os.path.isfile(Filename): 6 raise NameError,"%s is not a valid filename"%Filename 7 8 bk=xlrd.open_workbook(Filename) 9