重修課程day18(模塊2)
一 collections模塊 :數據類型模塊
namedtuple:可命名元組
p=collections.namedtuple(‘p‘,[‘x‘,‘y‘]) a=p(1,2) print(a.x+a.y)
deque:雙端隊列 1 append:後添加;2 appendleft:前添加;3 pop:從後向前取值;4 popleft:從前到後取值
q=collections.deque([1,2,3,4]) q.append(5) #後面添加 q.appendleft(7) #第一個位置添加 q.pop() #最後一個位置讀取 q.popleft() #第一個把位置開始讀取 print(q)
ordereddict:創建有序的字典
# d=collections.OrderedDict([(‘a‘,1),(‘b‘,2),(‘d‘,3)]) # for i in d.items():print(i)
defaultdict:默認字典的value值
# values = [11, 22, 33,44,55,66,77,88,99,90] # dic=collections.defaultdict(list) # for l in values: # if l>66: # dic[‘k1‘].append(l) # else: # dic[‘k2‘].append(l) # print(dic)
counter計算字符出現的次數
print(collections.Counter(‘asasfewruvs‘))
二 time模塊:時間模塊
time.time():當前時間戳 (計算機識別的時間) 從1970年1月1日00:00:00開始計算
# print(time.time(
time.strftime():時間字符串 結構化時間轉成字符串時間 #(人類識別的時間)
# print(time.strftime(‘%Y-%m-%d‘))
time.localtime():結構化時間(計算國內時間) 時間戳裝成結構化時間(計算國內時間)
# print(time.localtime())
time.gmtime():結構化時間(計算國際時間) 時間戳轉換成結構化時間(計算國際時間)
# print(time.gmtime())
time.mktime():結構化時間轉成時間戳 (機器識別的時間)
# print(time.mktime(time.localtime()))
time.strptime():字符串時間轉成結構化時間 (計算時間)
# time_1=time.strftime(‘%Y-%m-%d‘) # print(time.strptime(time_1,"%Y-%m-%d"))
time.asctime():結構化時間轉成字符串時間(轉換後有固定的格式)
# print(time.asctime())
time.ctime():時間戳轉成字符串時間(轉換後有固定的格式)
# print(time.ctime())
計算時間差:
# import time # end=time.time() # start=time.mktime(time.strptime(‘2017-09-11 08:30:00‘,‘%Y-%m-%d %H:%M:%S‘)) # end_start=end-start # cha_time=time.localtime(end_start) # print(‘已經過去了%s年%s月%s天%s小時%s分種%s秒‘%(cha_time.tm_year-1970,cha_time.tm_mon-1,cha_time.tm_mday-1,cha_time.tm_hour-0,cha_time.tm_min-1,cha_time.tm_sec-0))
時間日期格式化符合 %y:兩位數的年份 %Y:四位數的年份 %m:月份 %d:天 %H:24進制的小時 %I:12進制的小時 %M:分鐘 %S:秒 %a:本地簡化星期名稱 %A:本地完整星期名稱 %b:本地簡化的月份名稱 %B:本地完整的月份名稱 %c:本地相應的日期和時間的表示 %j:年內的一天 %p:本地AM或者PM的等價符 %U:一年中的星期數,星期天為星期的開始 %w:星期(0-6),星期天為開始 %W:一年中的星期數,星期一為開始 %x:本地相應的時間表示 %X:當前時期的名稱 %%:%本身
三 random模塊:隨機模塊
random:0到1之間的小數
print(random.random())
uniform:自定義小數範圍
print(random.uniform(1,4))
randint:自定義隨機整數的範圍(取頭取尾)
print(random.randint(1,10))
randrange:自定義隨機整數的範圍(取頭不取尾)還可以定義步長取
print(random.randrange(1,20,2))
choice:隨機返回一個值
print(random.choice([1,2,3,44,(2,4,6)]))
sample:隨機返回多個值,自定義返回值的個數
print(random.sample([1,2,3,44,(2,4,6)],3))
shuffle:打亂順序
l=[1,2,3,4,5,6,7,8,9] random.shuffle(l) print(l)
隨機驗證碼
# import random # def yan(n): # ll=‘‘ # for num in range(n): # i=random.randint(0,9) # j=chr(random.randint(65,90)) # z=chr(random.randint(97,122)) # l=random.choice([str(i),j,z]) # ll+=l # print(ll) # yan(6)
四 os模塊
os.getcwd:獲取當前的工作目錄 os.chdir:改變當前腳本的工作目錄 os.curdir:返回當前目錄 os.pardir:獲取當前目錄的父目錄字符串名 os.makedirs:可生成多層遞歸目錄 os.removedirs:遞歸刪除上一級的空目錄 os.mkdir:生成單層目錄 os.rmdir:刪除單級空的目錄 os.listdir:列出指定目錄下的所有的文件和子目錄 os.remove:刪除一個文件 os.rename:修改文件名/目錄名 os.stat:獲取文件/目錄信息 os.sep:輸出操作系統特定的路勁分割符 os.linesep:輸出當前平臺的行終止符 os.pathsep:輸出用於分割文件路徑的字符串 os.name:輸出字符串指示的當前平臺 os.system:運行shell命令直接顯示 os.popen:運行shell命令,獲取執行結果 os.environ:獲取系統的環境變量 os.path.abspath:返回path規範化的絕對路徑 os.path.exists:如果path存在,返回True;相反返回False os.path.isabs:如果path是絕對路徑返回True os.path.isfile:如果是是一個存在的文件返回True os.path.isdir:如果是一個存在的目錄返回True os.path.join:路徑拼接 os.path.getatime:返回所指向文件或者目錄最後的訪問時間 os.path.getmtime:返回所指文件或者目錄的最後修改時間 os.path.getsize:返回文件或者目錄的大
五 sys模塊
sys.argv:命令行參數list,第一個元素是程序的路徑本身
sys.exit:退出程序
sys.version:獲取python解釋器的版本信息
sys.path:返回模塊的 搜索路徑
sys.platform:返回操作系統平臺名稱
六 序列化模塊
什麽叫做序列化:將原本的數據類型轉換成字符串的過程就叫做序列化;相反將字符串轉為非字符串的數據類型就叫做反序列化
序列化的好處:1以某種存儲形式使自定義對象持久化;2 將對象從一個地方傳送到另一個地方;3 使程序更具有維護性
序列化的幾個模塊:json模塊:用於各種開發語言之間的,只能在基本的數據類型上使用
pickle模塊:只能用於python開發中,不過可以對特殊的數據類型進行操作
shelve模塊:只有open一個方法,直接就可以對文件句柄操作。讀取的內容是以存入的類型讀取的。
json和pickle的四種功能:dump和dumps:序列化,轉成字符串,dump用於文件操作;dumps用於網絡傳輸。
load和loads:反序列化,轉換成非字符串(內容中假如要用引號,必須用雙引號)。load用於文件操作,loads用於網絡傳輸。
json:
import json # a={‘fan‘:123,‘jie‘:321} # with open(‘a‘,‘w‘,encoding=‘utf-8‘)as f: # json.dump(a,f) #序列化寫入文件 # # with open(‘a‘)as f: # print(json.load(f)) #反序列化讀取 # print(type(json.dumps({‘fan‘:123,‘jie‘:321}))) #序列化 # print(type(json.loads(‘{"fan":123,"jie":321}‘))) #反序列化
pickle:
# import pickle # a={‘fan‘:123,‘jie‘:321} # with open(‘a1‘,‘wb‘)as f: # pickle.dump(a,f) #序列化寫入文件 # # with open(‘a1‘,‘rb‘)as f: # print(pickle.load(f)) #反序列化讀取 # # # print(type(pickle.dumps({‘fan‘:123,‘jie‘:321}))) #序列化 # print(type(pickle.loads(pickle.dumps(‘{"fan":123,"jie":321}‘)))) #反序列化
shelve:
# import shelve # with shelve.open(‘a2‘)as f: # f[‘k1‘]={"fan":123,"jie":321} 直接對文件句柄操作,就可以存入數據 # f[‘k2‘] = {"fang": 1234, "jie": 3210} 直接對文件句柄操作,就可以存入數據 # f1=f[‘k2‘] #取出數據的時候也只需要直接用key獲取即可,但是如果key不存在會報錯 # print(f1) # print(f[‘k1‘]) #取出數據的時候也只需要直接用key獲取即可,但是如果key不存在會報錯
重修課程day18(模塊2)