Python小知識(shí)點(diǎn)

Python的兩種引入機(jī)制

Python 提供了二種引入機(jī)制:

1.relative import
2.absolute impor

relative import

relative import 也叫作相對(duì)引入拍棕,在Python2.5及之前是默認(rèn)的引入方法。它的使用方法如下:

from .string import a
from ..string import a
from ...string import a

這種引入方式使用一個(gè)點(diǎn)號(hào)來標(biāo)識(shí)引入類庫的精確位置扮惦。與linux的相對(duì)路徑表示相似,一個(gè)點(diǎn)表示當(dāng)前目錄荸频,每多一個(gè)點(diǎn)號(hào)則代表向上一層目錄瓤鼻。

absolute import

absolute import 也叫作完全引入,非常類似于Java的引入進(jìn)制,在Python2.5被完全實(shí)現(xiàn)础废,但是是需要通過from future import absolute_import來打開該引入進(jìn)制。在Python2.6之后以及Python3罕模,完全引用成為Python的默認(rèn)的引入機(jī)制色迂。它的使用方法如下:

from pkg import foo
from pkg.moduleA import foo

要注意的是,需要從包目錄最頂層目錄依次寫下手销,而不能從中間開始歇僧。

Python中的import語句既可以引入模塊中的類, 也可以引入模塊中的變量, 還可以引入模塊中的函數(shù).

一般來說,要使用某個(gè)類的方法锋拖,需要先實(shí)例化一個(gè)對(duì)象再調(diào)用方法诈悍。

而使用@staticmethod或@classmethod,就可以不需要實(shí)例化兽埃,直接類名.方法名()來調(diào)用侥钳。

這有利于組織代碼,把某些應(yīng)該屬于某個(gè)類的函數(shù)給放到那個(gè)類里去柄错,同時(shí)有利于命名空間的整潔舷夺。

既然@staticmethod和@classmethod都可以直接類名.方法名()來調(diào)用,那他們有什么區(qū)別呢
從它們的使用上來看,

@staticmethod不需要表示自身對(duì)象的self和自身類的cls參數(shù)售貌,就跟使用函數(shù)一樣给猾。
@classmethod也不需要self參數(shù),但第一個(gè)參數(shù)需要是表示自身類的cls參數(shù)颂跨。

如果在@staticmethod中要調(diào)用到這個(gè)類的一些屬性方法敢伸,只能直接類名.屬性名或類名.方法名。

而@classmethod因?yàn)槌钟衏ls參數(shù)恒削,可以來調(diào)用類的屬性池颈,類的方法尾序,實(shí)例化對(duì)象等,避免硬編碼躯砰。

下面上代碼每币。

class A(object):  
    bar = 1  
    def foo(self):  
        print 'foo'  
 
    @staticmethod  
    def static_foo():  
        print 'static_foo'  
        print A.bar  
 
    @classmethod  
    def class_foo(cls):  
        print 'class_foo'  
        print cls.bar  
        cls().foo()  
  
A.static_foo()  
A.class_foo()

輸出

static_foo
1
class_foo
1
foo

創(chuàng)建兩個(gè).py文件一個(gè)用來配置manage.py

from app import create_app, db
from app.models import User
from flask_migrate import Migrate, MigrateCommand, upgrade
from flask_script import Manager, Shell

app = create_app('default')
manager = Manager(app)
migrate = Migrate(app, db)
manager.add_command('db', MigrateCommand)

if __name__ == '__main__':
    manager.run()

然后在終端中(要在虛擬環(huán)境下)運(yùn)行

python manage.py db init
 python manage.py db migrate
 python manage.py db upgrade

就可以初始化數(shù)據(jù)庫

在建一個(gè)run.py

#!/usr/bin/env python
from app import create_app

app = create_app('config')

if __name__ == '__main__':
    app.run()

就可以運(yùn)行APP

獲取工程目錄
projectDir = os.getcwd()
讀文件
filePath = projectDir + "/resource/Insure_getAllCity.json"
jsonStr = open(filePath)
jsonStr.read()
創(chuàng)建request請(qǐng)求
對(duì)html解析讀取編碼格式,統(tǒng)一轉(zhuǎn)碼為utf-8
from urllib.request import urlopen
import  chardet
response=urlopen(url,timeout=3)
html_byte=response.read()
chardit1 = chardet.detect(html_byte)
file = open(PROJECT_NAME + '/' + str(ALLNUM) + '.html', 'wb')          html_string=html_byte.decode(chardit1['encoding']).encode('utf-8')
file.write(html_string)
file.close()

利用到了chardet中的detect方法琢歇,獲取chardit1[‘encoding’]探知是何種類型的編碼兰怠,對(duì)其進(jìn)行譯碼,再編碼矿微。

解決python UnicodeDecodeError: 'gb2312' codec can't decode問題

問題:UnicodeDecodeError: 'gb2312' codec can't decode bytes in position 2-3: illegal multibyte sequence
原因:Python在做將普通字符串轉(zhuǎn)換為unicode對(duì)象時(shí)痕慢,
例如: u_string = unicode(string , "gb2312")尚揣,如果你的字符串string中有諸如某些繁體字涌矢,例如"河滘小學(xué)"
中的滘,那么gb2312作為簡(jiǎn)體中文編碼是不能進(jìn)行解析的快骗,必須使用國標(biāo)擴(kuò)展碼gbk娜庇,gbk支持繁體中文和日文假文

解決方法:使用gbk,代替gb2312方篮,例如:u_string = unicode(string , "gbk")

python下載文件的三種方法

Python開發(fā)中時(shí)長(zhǎng)遇到要下載文件的情況名秀,最常用的方法就是通過Http利用urllib或者urllib2模塊。

當(dāng)然你也可以利用ftplib從ftp站點(diǎn)下載文件藕溅。此外Python還提供了另外一種方法requests匕得。

下面來看看三種方法是如何來下載zip文件的:

方法一:

import urllib 
import urllib2 
import requests
print "downloading with urllib" 
url = 'http://www.pythontab.com/test/demo.zip'  
print "downloading with urllib"
urllib.urlretrieve(url, "demo.zip")

方法二:

import urllib2
print "downloading with urllib2"
url = 'http://www.pythontab.com/test/demo.zip' 
f = urllib2.urlopen(url) 
data = f.read() 
with open("demo2.zip", "wb") as code:     
    code.write(data)

方法三:

import requests 
print "downloading with requests"
url = 'http://www.pythontab.com/test/demo.zip' 
r = requests.get(url) 
with open("demo3.zip", "wb") as code:
     code.write(r.content)

看起來使用urllib最為簡(jiǎn)單,一句語句即可巾表。當(dāng)然你可以把urllib2縮寫成:

f = urllib2.urlopen(url) 

with open("demo2.zip", "wb") as code:

   code.write(f.read()) 
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末汁掠,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子集币,更是在濱河造成了極大的恐慌考阱,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,042評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件鞠苟,死亡現(xiàn)場(chǎng)離奇詭異乞榨,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)当娱,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,996評(píng)論 2 384
  • 文/潘曉璐 我一進(jìn)店門吃既,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人跨细,你說我怎么就攤上這事态秧《位” “怎么了券躁?”我有些...
    開封第一講書人閱讀 156,674評(píng)論 0 345
  • 文/不壞的土叔 我叫張陵诵原,是天一觀的道長(zhǎng)活喊。 經(jīng)常有香客問我,道長(zhǎng)捐友,這世上最難降的妖魔是什么淫半? 我笑而不...
    開封第一講書人閱讀 56,340評(píng)論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮匣砖,結(jié)果婚禮上科吭,老公的妹妹穿的比我還像新娘。我一直安慰自己猴鲫,他們只是感情好对人,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,404評(píng)論 5 384
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著拂共,像睡著了一般牺弄。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上宜狐,一...
    開封第一講書人閱讀 49,749評(píng)論 1 289
  • 那天势告,我揣著相機(jī)與錄音,去河邊找鬼抚恒。 笑死咱台,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的俭驮。 我是一名探鬼主播回溺,決...
    沈念sama閱讀 38,902評(píng)論 3 405
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼混萝!你這毒婦竟也來了遗遵?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,662評(píng)論 0 266
  • 序言:老撾萬榮一對(duì)情侶失蹤譬圣,失蹤者是張志新(化名)和其女友劉穎瓮恭,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體厘熟,經(jīng)...
    沈念sama閱讀 44,110評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡屯蹦,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,451評(píng)論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了绳姨。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片登澜。...
    茶點(diǎn)故事閱讀 38,577評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖飘庄,靈堂內(nèi)的尸體忽然破棺而出脑蠕,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 34,258評(píng)論 4 328
  • 正文 年R本政府宣布谴仙,位于F島的核電站迂求,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏晃跺。R本人自食惡果不足惜揩局,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,848評(píng)論 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望掀虎。 院中可真熱鬧凌盯,春花似錦、人聲如沸烹玉。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,726評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽二打。三九已至县忌,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間址儒,已是汗流浹背芹枷。 一陣腳步聲響...
    開封第一講書人閱讀 31,952評(píng)論 1 264
  • 我被黑心中介騙來泰國打工衅疙, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留莲趣,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,271評(píng)論 2 360
  • 正文 我出身青樓饱溢,卻偏偏與公主長(zhǎng)得像喧伞,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子绩郎,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,452評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容