1. 程式人生 > >重修課程day18(模塊2)

重修課程day18(模塊2)

課程 ice 搜索路徑 表示 回文 創建 對象 exists 所有

一 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)