常用模塊

1、自定義模塊

2移层、內(nèi)置模塊

3、開源模塊

os

用于提供系統(tǒng)級(jí)別的操作

os.getcwd() 獲取當(dāng)前工作目錄蕾羊,即當(dāng)前python腳本工作的目錄路徑
os.chdir("dirname") 改變當(dāng)前腳本工作目錄;相當(dāng)于shell下cd
os.curdir 返回當(dāng)前目錄: ('.')
os.pardir 獲取當(dāng)前目錄的父目錄字符串名:('..')
os.makedirs('dirname1/dirname2') 可生成多層遞歸目錄
os.removedirs('dirname1') 若目錄為空,則刪除哀澈,并遞歸到上一級(jí)目錄割按,如若也為空,則刪除弛矛,依此類推
os.mkdir('dirname') 生成單級(jí)目錄;相當(dāng)于shell中mkdir dirname
os.rmdir('dirname') 刪除單級(jí)空目錄万俗,若目錄不為空則無法刪除硕淑,報(bào)錯(cuò)于樟;相當(dāng)于shell中rmdir dirname
os.listdir('dirname') 列出指定目錄下的所有文件和子目錄靶橱,包括隱藏文件,并以列表方式打印
os.remove() 刪除一個(gè)文件
os.rename("oldname","newname") 重命名文件/目錄
os.renames()
os.stat('path/filename') 獲取文件/目錄信息
os.sep 輸出操作系統(tǒng)特定的路徑分隔符,win下為"\",Linux下為"/"
os.linesep 輸出當(dāng)前平臺(tái)使用的行終止符,win下為"\t\n",Linux下為"\n"
os.pathsep 輸出用于分割文件路徑的字符串
os.name 輸出字符串指示當(dāng)前使用平臺(tái)。win->'nt'; Linux->'posix'
os.system("bash command") 運(yùn)行shell命令,直接顯示
os.environ 獲取系統(tǒng)環(huán)境變量
os.path.abspath(path) 返回path規(guī)范化的絕對(duì)路徑
os.path.split(path) 將path分割成目錄和文件名二元組返回
os.path.dirname(path) 返回path的目錄风宁。其實(shí)就是os.path.split(path)的第一個(gè)元素
os.path.basename(path) 返回path最后的文件名。如何path以/或\結(jié)尾见剩,那么就會(huì)返回空值杀糯。即os.path.split(path)的第二個(gè)元素
os.path.exists(path) 如果path存在,返回True苍苞;如果path不存在,返回False
os.path.isabs(path) 如果path是絕對(duì)路徑狼纬,返回True
os.path.isfile(path) 如果path是一個(gè)存在的文件羹呵,返回True。否則返回False
os.path.isdir(path) 如果path是一個(gè)存在的目錄疗琉,則返回True冈欢。否則返回False
os.path.join(path1[, path2[, ...]]) 將多個(gè)路徑組合后返回,第一個(gè)絕對(duì)路徑之前的參數(shù)將被忽略
os.path.getatime(path) 返回path所指向的文件或者目錄的最后存取時(shí)間
os.path.getmtime(path) 返回path所指向的文件或者目錄的最后修改時(shí)間

sys

用于提供對(duì)解釋器相關(guān)的操作

sys.argv 命令行參數(shù)List盈简,第一個(gè)元素是程序本身路徑
sys.exit(n) 退出程序凑耻,正常退出時(shí)exit(0)
sys.version 獲取Python解釋程序的版本信息
sys.maxint 最大的Int值
sys.path 返回模塊的搜索路徑太示,初始化時(shí)使用PYTHONPATH環(huán)境變量的值
sys.platform 返回操作系統(tǒng)平臺(tái)名稱
sys.stdout.write('please:')
val = sys.stdin.readline()[:-1]

time & datetime

時(shí)間相關(guān)的操作

時(shí)間有三種表示方式:
時(shí)間戳 1970年1月1日之后的秒,即:time.time()
格式化的字符串 2014-11-11 11:11香浩, 即:time.strftime('%Y-%m-%d')
結(jié)構(gòu)化時(shí)間 元組包含了:年类缤、日、星期等... time.struct_time 即:time.localtime()

random

隨機(jī)數(shù)

>>> import random
>>> random.random()
0.5149354050435956
>>> random.random()
0.009944851377738706
>>> random.randint(1, 2)
1
>>> random.randint(1, 2)
2
>>> random.randrange(1, 10)
5
>>> random.randrange(1, 10)
7

隨機(jī)驗(yàn)證碼實(shí)例:

>>> import random
>>> check_code = ' '
>>> for i in range(4):
      current = random.randrange(0, 4)
      if current != i:
          temp = chr(random.randint(65, 90))
      else:
          temp = random.randint(0, 9)
      check_code += str(temp)

>>> check_code
'X6BF'

hashlib

用于加密相關(guān)的操作邻吭,代替了md5模塊和sha模塊餐弱,主要提供 SHA1, SHA224, ### SHA256, SHA384, SHA512 ,MD5 算法

import hashlib
 
# ######## md5 ########
 
hash = hashlib.md5()
hash.update('admin')
print hash.hexdigest()
 
# ######## sha1 ########
 
hash = hashlib.sha1()
hash.update('admin')
print hash.hexdigest()
 
# ######## sha256 ########
 
hash = hashlib.sha256()
hash.update('admin')
print hash.hexdigest()
 
 
# ######## sha384 ########
 
hash = hashlib.sha384()
hash.update('admin')
print hash.hexdigest()
 
# ######## sha512 ########
 
hash = hashlib.sha512()
hash.update('admin')
print hash.hexdigest()

#以上加密算法雖然依然非常厲害囱晴,但時(shí)候存在缺陷膏蚓,即:通過撞庫可以反解。所以畸写,有必要對(duì)加密算法中添加自定義key再來做加密驮瞧。
import hashlib
 
# ######## md5 ########
 
hash = hashlib.md5('898oaFs09f')
hash.update('admin')
print hash.hexdigest()

#還不夠吊?python 還有一個(gè) hmac 模塊枯芬,它內(nèi)部對(duì)我們創(chuàng)建 key 和 內(nèi)容 再進(jìn)行處理然后再加密

import hmac
h = hmac.new('wueiqi')
h.update('hellowo')
print h.hexdigest()

#不能再牛逼了B郾省!破停!

copy

淺拷貝
copy.copy()
深拷貝
copy.deepcopy()

shutil

高級(jí)的文件翅楼、文件夾、壓縮包處理

configparser

用于對(duì)特定的配置進(jìn)行操作

logging

用于便捷記錄日志且線程安全的模塊

shelve

json & pickle

用于序列化的兩個(gè)模塊

  • json真慢,用于字符串 和 python數(shù)據(jù)類型間進(jìn)行轉(zhuǎn)換
  • pickle毅臊,用于python特有的類型 和 python的數(shù)據(jù)類型間進(jìn)行轉(zhuǎn)換
    Json模塊提供了四個(gè)功能:dumps、dump黑界、loads管嬉、load
    pickle模塊提供了四個(gè)功能:dumps、dump朗鸠、loads蚯撩、load
    pickle.dumps將數(shù)據(jù)通過特殊的形式轉(zhuǎn)換為只有python語言認(rèn)識(shí)的字符串
    pickle.dump將數(shù)據(jù)通過特殊的形式轉(zhuǎn)換為只有python語言認(rèn)識(shí)的字符串,并寫入文件
    json.dumps將數(shù)據(jù)通過特殊的形式轉(zhuǎn)換為所有程序語言都認(rèn)識(shí)的字符串
    json.dump將數(shù)據(jù)通過特殊的形式轉(zhuǎn)換為所有程序語言都認(rèn)識(shí)的字符串烛占,并寫入文件
    反序列化為 loads 或 load
>>> data = dict(name='Bob', age=20, score=88)
>>> import pickle
>>> with open('C:/Users/Why Me/Desktop/Lp/dump.txt', 'wb'):
    pickle.dump(data, f)

看看寫入的dump.txt文件胎挎,一堆亂七八糟的內(nèi)容,這些都是Python保存的對(duì)象內(nèi)部信息忆家。
當(dāng)我們要把對(duì)象從磁盤讀到內(nèi)存時(shí)中燥,可以先把內(nèi)容讀到一個(gè)bytes叛本,然后用pickle.loads()方法反序列化出對(duì)象野哭,也可以直接用pickle.load()方法從一個(gè)file-like Object中直接反序列化出對(duì)象抑淫。我們打開另一個(gè)Python命令行來反序列化剛才保存的對(duì)象:

>>> with open('C:/Users/Why Me/Desktop/Lp/dump.txt', 'rb') as f:
    d = pickle.load(f)

>>> d
{'score': 88, 'name': 'Bob', 'age': 20}

Pickle的問題和所有其他編程語言特有的序列化問題一樣,就是它只能用于Python卸例,并且可能不同版本的Python彼此都不兼容称杨,因此肌毅,只能用Pickle保存那些不重要的數(shù)據(jù),不能成功地反序列化也沒關(guān)系姑原。

如果我們要在不同的編程語言之間傳遞對(duì)象悬而,就必須把對(duì)象序列化為標(biāo)準(zhǔn)格式,比如XML页衙,但更好的方法是序列化為JSON摊滔,因?yàn)镴SON表示出來就是一個(gè)字符串,可以被所有語言讀取店乐,也可以方便地存儲(chǔ)到磁盤或者通過網(wǎng)絡(luò)傳輸艰躺。JSON不僅是標(biāo)準(zhǔn)格式,并且比XML更快眨八,而且可以直接在Web頁面中讀取腺兴,非常方便。

JSON表示的對(duì)象就是標(biāo)準(zhǔn)的JavaScript語言的對(duì)象廉侧,JSON和Python內(nèi)置的數(shù)據(jù)類型對(duì)應(yīng)如下:
JSON類型 Python類型
{} dict
[] list
"string" str
1234.56 int或float
true/false True/False
null None

>>> import json
>>> d = dict(name='Bob', age=20, score=88)
>>> data = json.dumps(d)
>>> data
'{"score": 88, "name": "Bob", "age": 20}'
>>> json.loads(data)
{'score': 88, 'name': 'Bob', 'age': 20}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末页响,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子段誊,更是在濱河造成了極大的恐慌闰蚕,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,907評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件连舍,死亡現(xiàn)場離奇詭異没陡,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)索赏,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,987評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門盼玄,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人潜腻,你說我怎么就攤上這事埃儿。” “怎么了融涣?”我有些...
    開封第一講書人閱讀 164,298評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵童番,是天一觀的道長。 經(jīng)常有香客問我威鹿,道長妓盲,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,586評(píng)論 1 293
  • 正文 為了忘掉前任专普,我火速辦了婚禮,結(jié)果婚禮上弹沽,老公的妹妹穿的比我還像新娘檀夹。我一直安慰自己筋粗,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,633評(píng)論 6 392
  • 文/花漫 我一把揭開白布炸渡。 她就那樣靜靜地躺著娜亿,像睡著了一般。 火紅的嫁衣襯著肌膚如雪蚌堵。 梳的紋絲不亂的頭發(fā)上买决,一...
    開封第一講書人閱讀 51,488評(píng)論 1 302
  • 那天,我揣著相機(jī)與錄音吼畏,去河邊找鬼督赤。 笑死,一個(gè)胖子當(dāng)著我的面吹牛泻蚊,可吹牛的內(nèi)容都是我干的躲舌。 我是一名探鬼主播,決...
    沈念sama閱讀 40,275評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼性雄,長吁一口氣:“原來是場噩夢啊……” “哼没卸!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起秒旋,我...
    開封第一講書人閱讀 39,176評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤约计,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后迁筛,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體煤蚌,經(jīng)...
    沈念sama閱讀 45,619評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,819評(píng)論 3 336
  • 正文 我和宋清朗相戀三年瑰煎,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了铺然。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,932評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡酒甸,死狀恐怖魄健,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情插勤,我是刑警寧澤沽瘦,帶...
    沈念sama閱讀 35,655評(píng)論 5 346
  • 正文 年R本政府宣布,位于F島的核電站农尖,受9級(jí)特大地震影響析恋,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜盛卡,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,265評(píng)論 3 329
  • 文/蒙蒙 一助隧、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧滑沧,春花似錦并村、人聲如沸巍实。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,871評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽棚潦。三九已至,卻和暖如春膝昆,著一層夾襖步出監(jiān)牢的瞬間丸边,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,994評(píng)論 1 269
  • 我被黑心中介騙來泰國打工荚孵, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留妹窖,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,095評(píng)論 3 370
  • 正文 我出身青樓处窥,卻偏偏與公主長得像嘱吗,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子滔驾,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,884評(píng)論 2 354

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