Time of Update: 2016-06-06
前2種方法主要用到了列表解析,效能稍差,而最後一種使用的時候產生器運算式,相比列表解析,更省記憶體列表解析和產生器運算式很相似:列表解析[expr for iter_var in iterable if cond_expr]產生器運算式(expr for iter_var in iterable if cond_expr) 方法1:最原始 代碼如下:longest = 0f = open(FILE_PATH,"r")allLines = [line.strip() for line in
Time of Update: 2016-06-06
對於python 多線程的理解,我花了很長時間,搜尋的大部份文章都不夠通俗易懂。所以,這裡力圖用簡單的例子,讓你對多線程有個初步的認識。單線程 在好些年前的MS-DOS時代,作業系統處理問題都是單任務的,我想做聽音樂和看電影兩件事兒,那麼一定要先排一下順序。(好吧!我們不糾結在DOS時代是否有聽音樂和看影的應用。^_^) 代碼如下:from time import ctime,sleepdef music(): for i in range(2): print "I
Time of Update: 2016-06-06
這篇部落格其實就是這個集合整理後一部分的公開亮相。如果你已經是個python大牛,那麼基本上你應該知道這裡面的大多數用法了,但我想你應該也能發現一些你不知道的新技巧。而如果你之前是一個c,c++,java的程式員,同時在學習python,或者乾脆就是一個剛剛學習編程的新手,那麼你應該會看到很多特別有用能讓你感到驚奇的實用技巧,就像我當初一樣。每一個技巧和語言用法都會在一個個執行個體中展示給大家,也不需要有其他的說明。我已經儘力把每個例子弄的通俗易懂,但是因為讀者對python的熟悉程度不同,仍然
Time of Update: 2016-06-06
使用re, urllib, threading 多線程抓取天涯文章內容,設定url為需抓取的天涯文章的第一頁,設定file_name為下載後的檔案名稱 代碼如下:#coding:utf-8import urllibimport reimport threadingimport os, timeclass Down_Tianya(threading.Thread): """多線程下載""" def __init__(self, url, num, dt):
Time of Update: 2016-06-06
代碼如下:# -*- coding: utf-8 -*-import Image,ImageDraw,ImageFontimport randomimport math, string class RandomChar(): """用於隨機產生漢字""" @staticmethod def Unicode(): val = random.randint(0x4E00, 0x9FBF) return unichr(val) @staticmethod def GB231
Time of Update: 2016-06-06
一、使用內建方法和修飾器方法擷取類名、函數名python中擷取函數名的情況分為內部、外部,從外部的情況好擷取,使用指向函數的對象,然後用__name__屬性 代碼如下:def a():passa.__name__除此之外還可以: 代碼如下:getattr(a,'__name__')儘管有些脫褲子放屁,總之,從外部擷取的方法是非常靈活的。有些同學需要從函數內部擷取函數本身的名字,就需要用些技巧了。1.使用sys模組的方法: 代碼如下:def a():print sys._getframe().f_
Time of Update: 2016-06-06
報“服務沒有及時響應或控制請求”的錯誤,改用pyinstaller產生也是不行;查資料後修改setup.py如下即可,服務名、指令碼名請自行替換: 代碼如下:#!/usr/bin/python #-*-coding:cp936-*-from distutils.core import setupimport py2execlass Target: def __init__(self, **kw): self.__dict__.update(kw) # for
Time of Update: 2016-06-06
UDP廣泛應用於需要相互傳輸資料的網路應用中,如QQ使用的就是UDP協議。在網路品質不好的情況下,使用UDP協議時丟包現象十分嚴重,但UDP佔用資源少,處理速度快,UDP依然是傳輸資料時常用的協議。下面是用python實現UDP伺服器的代碼: 代碼如下:#!/usr/bin/env pythonimport
Time of Update: 2016-06-06
Simhash的演算法簡單的來說就是,從海量文本中快速搜尋和已知simhash相差小於k位的simhash集合,這裡每個文本都可以用一個simhash值來代表,一個simhash有64bit,相似的文本,64bit也相似,論文中k的經驗值為3。該方法的缺點如優點一樣明顯,主要有兩點,對於短文本,k值很敏感;另一個是由於演算法是以空間換時間,系統記憶體吃不消。 代碼如下:#!/usr/bin/python# coding=utf-8class simhash: #建構函式 def __
Time of Update: 2016-06-06
php5.2升級到5.3後,原& new的寫法已經被放棄了,可以直接new了,面對上百個php檔案,手動修改簡直是想要命,所以寫了個指令碼,分分鐘搞定。 代碼如下:#-*- coding:utf-8 -*- #!/usr/bin/python import os#定義程式根目錄rootpath='D:\\wamp\\www\\erp\\app'def m_replace(path): for item in os.listdir(path):
Time of Update: 2016-06-06
1.取過去具體時間的方法: 代碼如下:#!/usr/bin/python import time #取一天前的當前具體時間 time.strftime('%Y-%m-%d %T',time.localtime(time.time()-24*60*60)) #取15天前的當前具體時間 time.strftime('%Y-%m-%d %T',time.localtime(time.time()-15*24*60*60)) #取15天前當前具體時間的前2小時
Time of Update: 2016-06-06
關於設計模式中的觀察者模式,定義如下(維基百科):觀察者模式(有時又被稱為發布/訂閱模式)是軟體設計模式的一種。在此種模式中,一個目標物件管理所有相依於它的觀察者物件,並且在它本身的狀態改變時主動發出通知。這通常透過呼叫各觀察者所提供的方法來實現。此種模式通常被用來實作事件處理系統。簡單來說,一個被觀察者有很多觀察者,被觀察者的狀態的改變會引起所有觀察者的響應操作。那麼我們用Python2.7來實現觀察者模式。Python中的集合set集合(set),類似於列表(list),但是它沒有重複的元素
Time of Update: 2016-06-06
代碼如下:#!/usr/bin/python #-*-coding:utf-8-*-from PyQt4.QtGui import *from PyQt4.QtCore import *from PyQt4.Qt import *class ChangeSkinWidget(QWidget): def __init__(self,parent = None): super(ChangeSkinWidget,self).__init__(parent) self.setFixedSize(1
Time of Update: 2016-06-06
代碼如下:#-*- encoding: utf-8 -*-'''Created on 2014-4-24@author: Leon Wong'''import urllib2import urllibimport reimport timeimport osimport uuid#擷取二級頁面urldef findUrl2(html): re1 = r'http://tuchong.com/\d+/\d+/|http://\w+(? url2list = re.findall(re1
Time of Update: 2016-06-06
代碼如下:#!/usr/bin/env pythonimport sys,timefrom socket import socketdef read_interface(in_file): with file(in_file) as f: return f.readlines()[2:]def set_interface(inter_msg): dic={} for i in xrange(len(inter_msg)):
Time of Update: 2016-06-06
翻牆常用的方式就是使用代理(Proxy),其基本過程如下:瀏覽器Proxy 伺服器伺服器如果瀏覽器請求不到伺服器,或者伺服器無法響應瀏覽器,我們可以設定將瀏覽器的請求傳遞給Proxy 伺服器,Proxy 伺服器將請求轉寄給伺服器。然後,Proxy 伺服器將伺服器的響應內容傳遞給瀏覽器。當然,Proxy 伺服器在得到請求或者響應內容的時候,本身也可以做些處理,例如緩衝靜態內容以加速,或者說提取請求內容或者響應內容做些正當或者不正當的分析。這種翻牆方式,就是設計模式中代理模式(Proxy
Time of Update: 2016-06-06
1.為模組nester建立檔案夾nester,其中包含:nester.py(模組檔案): 代碼如下:"""這是"nester.py"模組,提供了一個名為print_lol()函數, 函數作用是列印列表,氣質包含嵌套列表"""def print_lol(the_list): """這個函數取了一個位置參數,名為"the_list",可以是任何python列表 所指定的列表中的每一個資料項目會遞迴地輸出到螢幕上,各資料項目佔一行""" for each_item in
Time of Update: 2016-06-06
代碼如下: #!/usr/bin/python #-*-coding:utf-8-*-from PyQt4.QtGui import *from PyQt4.QtCore import *from PyQt4.Qt import *class CLabel(QWidget): signalLabelPress = pyqtSignal() def __init__(self,parent = None): super(CLabel,self).__init__(parent)
Time of Update: 2016-06-06
代碼如下:#encoding:utf-8import socketimport htmllib,formatterdef open_socket(host,servname): s=socket.socket(socket.AF_INET,socket.SOCK_STREAM) port=socket.getservbyname(servname) s.connect((host,port)) return
Time of Update: 2016-06-06
代碼如下:# -*- coding: utf-8 -*-import sysimport MySQLdbreload(sys)sys.setdefaultencoding('utf-8')class DB(object): def __init__(self,host='127.0.0.1',port=3306,user='root',passwd='123',database=''): self.__host=host self.__port=port self.__user=user