Time of Update: 2016-06-06
最近重新拾起Django,但是Django並不支援mongodb,但是有一個模組mongoengine可以實現Django Model類似的封裝.但是mongoengine的中文文檔幾乎沒有,有的也是簡短的幾句介紹和使用.下面我就分享一下我在使用過程中所記錄下的一些筆記,可能有點亂.大家可以參考一下.安裝mongoengineeasy_install pymongo # 依賴庫easy_install mongoengine基本使用from mongoengine import *from
Time of Update: 2016-06-06
這兩天為用bottle+mongodb寫的一個項目加上登入功能,無奈怎麼都擷取不到儲存的cookie,文檔給出讓我們這樣操作cookie的程式碼片段:@route('/login')def login (): username = request .forms .get('username ') password = request .forms .get('password ') if check_user_credentials(username, password):
Time of Update: 2016-06-06
django-pipeline 是一個 Django 下非常方便的靜態資源管理 app,尤其是 1.2 版本之後,利用 django-staticfiles 的collectstatic 命令,在開發、部署環境下切換非常方便。寫 codinn.com 代碼的時候,靜態資源管理方面遇到了一些煩人的事情: 為了加速頁面載入速度,瀏覽器會緩衝靜態檔案,靜態資源更新後,瀏覽器很可能從緩衝提取到期的靜態檔案 自己寫的 CSS/JS 要手工 minify,非常麻煩 零碎的
Time of Update: 2016-06-06
為什麼寫這個程式,為什麼不給這個程式配備gui?原因很簡單,因為我是一個命令列控,Linux習慣了不習慣了滑鼠,總覺得點著不如敲命令快,各位在看這篇文章就說明和本人有相同的愛好.這個用python寫的翻譯工具是通過google來實現的,由於google返回的資料不是很規範(或者說我沒有找到規律),現在前三項能正常顯示(源詞,翻譯結果,和漢語拼音).下面的詞性和其他釋義可能不同,見諒,望大神可以指點下小弟和幫小弟完善,這裡趕緊不盡.好了不費話了,下面放代碼:#!/usr/bin/env
Time of Update: 2016-06-06
剛才好無聊,突然想起來之前做一個課表的點子,於是百度了起來。剛開始,我是這樣想的:在寫牆的時候,用到了urllib2【兩行代碼抓網頁】,那麼就只剩下解析html了。於是百度:python解析html。發現一篇好文章,其中介紹到了pyQuery。pyQuery 是 jQuery 在 Python 中的實現,能夠以 jQuery 的文法來操作解析 HTML 文檔。使用前需要安裝,Mac安裝方法如下:sudo easy_install pyqueryOK!安裝好了!我們來試一試吧:from
Time of Update: 2016-06-06
資料類型電腦顧名思義就是可以做數學計算的機器,因此,電腦程式理所當然地可以處理各種數值。但是,電腦能處理的遠不止數值,還可以處理文本、圖形、音頻、視頻、網頁等各種各樣的資料,不同的資料,需要定義不同的資料類型。在Python中,能夠直接處理的資料類型有以下幾種:整數Python可以處理任意大小的整數,當然包括負整數,在程式中的表示方法和數學上的寫法一模一樣,例如:1,100,-8080,0,等等。電腦由於使用二進位,所以,有時候用十六進位表示整數比較方便,十六進位用0x首碼和0-9,a-f表示,
Time of Update: 2016-06-06
這裡是簡單的安裝和使用記錄,首先要有一個可用的mongo環境,win環境或者linux環境都可以。 假定你對mongo有所瞭解和知道一些命令列操作。安裝和更新跟大多數py包安裝一樣,可以源碼安裝,也可以使用pip或者easy_install來安裝安裝 代碼如下:pip install pymongo升級 代碼如下:pip install --upgrade pymongo其他安裝方法請參照文檔pymongo安裝操作官網教程小案例 代碼如下:#-*- coding: utf-8
Time of Update: 2016-06-06
Python內建的filter()函數用於過濾序列。和map()類似,filter()也接收一個函數和一個序列。和map()不同的時,filter()把傳入的函數依次作用於每個元素,然後根據傳回值是True還是False決定保留還是丟棄該元素。例如,在一個list中,刪掉偶數,只保留奇數,可以這麼寫:def is_odd(n): return n % 2 == 1filter(is_odd, [1, 2, 4, 5, 6, 9, 10, 15])# 結果: [1, 5, 9,
Time of Update: 2016-06-06
在Class內部,可以有屬性和方法,而外部代碼可以通過直接調用執行個體變數的方法來操作資料,這樣,就隱藏了內部的複雜邏輯。但是,從前面Student類的定義來看,外部代碼還是可以自由地修改一個執行個體的name、score屬性:>>> bart = Student('Bart Simpson', 98)>>> bart.score98>>> bart.score = 59>>>
Time of Update: 2016-06-06
由於函數也是一個對象,而且函數對象可以被賦值給變數,所以,通過變數也能調用該函數。>>> def now():... print '2013-12-25'...>>> f = now>>> f()2013-12-25函數對象有一個__name__屬性,可以拿到函數的名字:>>> now.__name__'now'>>>
Time of Update: 2016-06-06
Python標準庫中collections對集合類型的資料結構進行了很多拓展操作,這些操作在我們使用集合的時候會帶來很多的便利,多看看很有好處。defaultdict是其中一個方法,就是給字典value元素添加預設類型,之前看到過但是沒注意怎麼使用,今天特地瞅了瞅。首先是各大文章介紹的第一個例子: 代碼如下:import collections as coll def default_factory(): return 'default value' d =
Time of Update: 2016-06-06
繼承是物件導向編程的一個重要的方式,因為通過繼承,子類就可以擴充父類的功能。回憶一下Animal類層次的設計,假設我們要實現以下4種動物: Dog - 狗狗; Bat - 蝙蝠; Parrot - 鸚鵡; Ostrich - 鴕鳥。如果按照哺乳動物和鳥類歸類,我們可以設計出這樣的類的層次:但是如果按照“能跑”和“能飛”來歸類,我們就應該設計出這樣的類的層次:如果要把上面的兩種分類都包含進來,我們就得設計更多的層次:
Time of Update: 2016-06-06
在寫一個多線程類的時候調用報錯 RuntimeError: thread.__init__() not called 代碼如下:class NotifyTread(threading.Thread): def __init__(self, params): threading.Thread.__init__(self) #here。。。。。。 self.params = params def run(self):
Time of Update: 2016-06-06
本文執行個體講述了python將文本轉換成圖片輸出的方法。分享給大家供大家參考。具體實現方法如下:#-*- coding:utf-8 -*-from PIL import Image,ImageFont,ImageDrawtext = u'歡迎訪問,http://www.bitsCN.com'font = ImageFont.truetype("msyh.ttf",18)lines = []line =''for word in text.split(): print word if
Time of Update: 2016-06-06
本文執行個體講述了python實現從網路下載檔案並獲得檔案大小及類型的方法。分享給大家供大家參考。具體實現方法如下:import urllib2from settings import COOKIESopener = urllib2.build_opener()cookies = ";".join("%s=%s" % (k, v) for k, v in COOKIES.items())opener.addheaders.append(('Cookie', cookies))req =
Time of Update: 2016-06-06
python發送email還是比較簡單的,可以通過登入郵件服務來發送,linux下也可以使用調用sendmail命令來發送,還可以使用本地或者是遠端smtp服務來發送郵件,不管是單個,群發,還是抄送都比較容易實現。先把幾個最簡單的發送郵件方式記錄下,像html郵件,附件等也是支援的,需要時查文檔即可1、登入郵件服務 代碼如下:#!/usr/bin/env python # -*- coding: utf-8 -*- #python2.7x
Time of Update: 2016-06-06
在綁定屬性時,如果我們直接把屬性暴露出去,雖然寫起來很簡單,但是,沒辦法檢查參數,導致可以把成績隨便改:s = Student()s.score = 9999這顯然不合邏輯。為了限制score的範圍,可以通過一個set_score()方法來設定成績,再通過一個get_score()來擷取成績,這樣,在set_score()方法裡,就可以檢查參數:class Student(object): def get_score(self): return self._score def set_
Time of Update: 2016-06-06
項目中有個定時任務,每天取到一些表資料傳到一個外部介面,但是最近總是有異常,今天查了下原因。首先本地和測試環境測試這個程式都沒問題,只有線上環境會在日誌中拋出異常,猜測異常主要產生的原因是資料的異常。但是哪些資料有異常,由不得而知,於是增加了程式的輸出日誌和資料列印,通過幾次的運行定位了發生錯誤的函數和資料記錄。異常是這樣的: 代碼如下:EOL while scanning string literal: , line 1, pos 7
Time of Update: 2016-06-06
問題:例如我們要選從不同省份選取一個號碼,每個省份的權重不一樣,直接選隨機數肯定是不行的了,就需要一個模型來解決這個問題。簡化成下面的問題: 字典的key代表是省份,value代表的是權重,我們現在需要一個函數,每次基於權重選擇一個省份出來{"A":2, "B":2, "C":4, "D":10, "E": 20}解決:這是能想到和能看到的最多的版本,不知道還沒有更高效好用的演算法。#!/usr/bin/env python # -*- coding: utf-8 -*-
Time of Update: 2016-06-06
本文執行個體講述了python中dir函數用法。分享給大家供大家參考。具體分析如下:dir 函數返回任意對象的屬性和方法列表,包括模組對象、函數對象、字串對象、列表對象、字典對象 ...... 相當多的東西。dir函數樣本:>>> li = []>>> dir(li)['append','count','extend','index','insert','pop','remove','reverse','sort']>>> d = {}>>>