標籤:資料 item 計算 注意 不同 需要 shu 順序 min
內建模組是Python內建的功能,在使用內建模組相應的功能時,需要【先匯入】再【使用】
一、time模組
在Python中,通常有這幾種方式來表示時間:
- 時間戳記(timestamp):通常來說,時間戳記表示的是從1970年1月1日00:00:00開始按秒計算的位移量。我們運行“type(time.time())”,返回的是float類型。
- 格式化的時間字串(Format String)
- 結構化的時間(struct_time):struct_time元組共有9個元素共九個元素:(年,月,日,時,分,秒,一年中第幾周,一年中第幾天,夏令時)
import time#--------------------------我們先以目前時間為準,讓大家快速認識三種形式的時間print(time.time()) # 時間戳記:1487130156.419527print(time.strftime("%Y-%m-%d %X")) #格式化的時間字串:‘2017-02-15 11:40:53‘print(time.localtime()) #本地時區的struct_timeprint(time.gmtime()) #UTC時區的struct_time
#--------------------------按圖1轉換時間# localtime([secs])# 將一個時間戳記轉換為當前時區的struct_time。secs參數未提供,則以目前時間為準。time.localtime()time.localtime(1473525444.037215)# gmtime([secs]) 和localtime()方法類似,gmtime()方法是將一個時間戳記轉換為UTC時區(0時區)的struct_time。# mktime(t) : 將一個struct_time轉化為時間戳記。print(time.mktime(time.localtime()))#1473525749.0# strftime(format[, t]) : 把一個代表時間的元組或者struct_time(如由time.localtime()和# time.gmtime()返回)轉化為格式化的時間字串。如果t未指定,將傳入time.localtime()。如果元組中任何一個# 元素越界,ValueError的錯誤將會被拋出。print(time.strftime("%Y-%m-%d %X", time.localtime()))#2016-09-11 00:49:56# time.strptime(string[, format])# 把一個格式化時間字串轉化為struct_time。實際上它和strftime()是逆操作。print(time.strptime(‘2011-05-05 16:37:06‘, ‘%Y-%m-%d %X‘))#time.struct_time(tm_year=2011, tm_mon=5, tm_mday=5, tm_hour=16, tm_min=37, tm_sec=6,# tm_wday=3, tm_yday=125, tm_isdst=-1)#在這個函數中,format預設為:"%a %b %d %H:%M:%S %Y"。
#--------------------------按圖2轉換時間# asctime([t]) : 把一個表示時間的元組或者struct_time表示為這種形式:‘Sun Jun 20 23:21:05 1993‘。# 如果沒有參數,將會將time.localtime()作為參數傳入。print(time.asctime())#Sun Sep 11 00:43:43 2016# ctime([secs]) : 把一個時間戳記(按秒計算的浮點數)轉化為time.asctime()的形式。如果參數未給或者為# None的時候,將會預設time.time()為參數。它的作用相當於time.asctime(time.localtime(secs))。print(time.ctime()) # Sun Sep 11 00:46:38 2016print(time.ctime(time.time())) # Sun Sep 11 00:46:38 2016
二、random模組
import random print(random.random())#(0,1)----float 大於0且小於1之間的小數 print(random.randint(1,3)) #[1,3] 大於等於1且小於等於3之間的整數 print(random.randrange(1,3)) #[1,3) 大於等於1且小於3之間的整數 print(random.choice([1,‘23‘,[4,5]]))#1或者23或者[4,5] print(random.sample([1,‘23‘,[4,5]],2))#列表元素任意2個組合 print(random.uniform(1,3))#大於1小於3的小數,如1.927109612082716 item=[1,3,5,7,9]random.shuffle(item) #打亂item的順序,相當於"洗牌"print(item)
三、OS模組與sys模組
os模組是與作業系統互動的一個介面,用於提供系統層級的操作。
sys模組用於提供對Python解譯器相關的操作。
四、序列化
Python中用於序列化的兩個模組
- json 用於【字串】和 【python基礎資料型別 (Elementary Data Type)】 間進行轉換
- pickle 用於【python特有的類型】 和 【python基礎資料型別 (Elementary Data Type)】間進行轉換
Json模組提供了四個功能:dumps、dump、loads、load
pickle模組提供了四個功能:dumps、dump、loads、load
1.json模組
如果我們要在不同的程式設計語言之間傳遞對象,就必須把對象序列化為標準格式,比如XML,但更好的方法是序列化為JSON,因為JSON表示出來就是一個字串,可以被所有語言讀取,也可以方便地儲存到磁碟或者通過網路傳輸。JSON不僅是標準格式,並且比XML更快,而且可以直接在Web頁面中讀取,非常方便。
JSON表示的對象就是標準的JavaScript語言的對象。
注意事項:
import json#dct="{‘1‘:111}"#json 不認單引號#dct=str({"1":111})#報錯,因為產生的資料還是單引號:{‘one‘: 1}dct=‘{"1":"111"}‘print(json.loads(dct))#conclusion:# 無論資料是怎樣建立的,只要滿足json格式,就可以json.loads出來,不一定非要dumps的資料才能loads
#----------------------------序列化import json dic={‘name‘:‘alvin‘,‘age‘:23,‘sex‘:‘male‘}print(type(dic))#<class ‘dict‘> j=json.dumps(dic)print(type(j))#<class ‘str‘> f=open(‘序列化對象‘,‘w‘)f.write(j) #-------------------等價於json.dump(dic,f)f.close()#-----------------------------還原序列化<br>import jsonf=open(‘序列化對象‘)data=json.loads(f.read())# 等價於data=json.load(f)
2.pickle模組
##----------------------------序列化import pickle dic={‘name‘:‘alvin‘,‘age‘:23,‘sex‘:‘male‘} print(type(dic))#<class ‘dict‘> j=pickle.dumps(dic)print(type(j))#<class ‘bytes‘> f=open(‘序列化對象_pickle‘,‘wb‘)#注意是w是寫入str,wb是寫入bytes,j是‘bytes‘f.write(j) #-------------------等價於pickle.dump(dic,f) f.close()#-------------------------還原序列化import picklef=open(‘序列化對象_pickle‘,‘rb‘) data=pickle.loads(f.read())# 等價於data=pickle.load(f) print(data[‘age‘])
Pickle的問題和所有其他程式設計語言特有的序列化問題一樣,就是它只能用於Python,並且可能不同版本的Python彼此都不相容,因此,只能用Pickle儲存那些不重要的資料,不能成功地還原序列化也沒關係。
五、re模組
Python進階【第十一篇】模組(下)之常用模組