1. 程式人生 > >Python學習day20 常用模塊部分

Python學習day20 常用模塊部分

alt 2-0 argv ins 修改 close 導入 順序 ase

模塊:
pip install 模塊名稱
安裝模塊
導入模塊 from collections import namedtuple
collections模塊:
提供了幾個額外的數據類型:
Counter、deque、defaultdict、namedtuple\OrderedDict
1.namedtuple:生成可以使用名字來訪問元素內容的tuple
2.deque:雙端隊列,可以快速的從另外一側追加和推出對象
3.Counter:計數器
4.OrderedDict字典有序化
5,defaultdict字典解決方法

namedtuple 可命名元祖:
對於可命名元祖來說可以通過名字訪問.
namedtuple(‘Point‘,[‘x‘,‘y‘])


p=P(1,2)
print(p.x)
print(p.y)
實用性:讓別人看代碼比較方便
deque模塊 雙端隊列:
隊列:先進先出
兩端值先拿出來,從兩端放值拿值。有appendleft和popleft
OrderedDict字典有序:
from collections import OrderedDict
直接強轉字典時把dict換成OrdereDict
defaultdict字典解決:
from collections import defaultdict
values=[11,22,33,44,55,66,77,88,99]
my_dict=defaultdict(list)
print(my_dict)
print(my_dict.get(‘k‘))

my_dict[‘k‘].append(1)
print(my_dict)
省下了一個創建鍵值的步驟
Counter 計算每個字符字典中出現的次數:
同上導入模塊方法
用字典方法將字符串字母出現次數來排序


時間模塊:
直接import time
time.time()時間戳
表示時間三種方式:
(1)時間戳,從1970年1月1日零點開始按秒計算的偏移量,float型。標識時間
然後用這個時間計算時間
(2)格式化的時間字符串(Format String):‘1999-12-06‘
(3)元祖時間()


time.strftime(‘‘)後面給一個格式化格式
%Y是年%m是月%d是天,除了年是小寫 %H:%M:%S 時分秒都大寫
大%I是12小時制的%p是上下午
%a是簡化星期名大寫不簡化
%c本地相應標準時間
%j年內的一天
%x 日期
%X時間
time.localtime() 默認參數當前時間 也就是括號內time.time
time.struct_time()做時間計算 結構化時間
time.gmtime()是utc 倫敦的時間 後面可以加時間戳數字時間
時間戳轉結構化↑

time.mktime()結構化轉時間戳
結構化時間轉字符串時間:
time.strftime()括號前要轉換的,後面是格式
字符串時間轉化結構化時間
time.strptime()前面寫進去時間,括號後面是給的是什麽格式

結構化時間轉%a%b%d%H:%M:%S %Y串
time.asctime()裏面可以是time.localtime()
將結構化時間轉換成固定格式
串轉成結構化時間
time.ctime()給一個時間戳就可以
時間元祖:
做時間計算的
random模塊:
random.random()隨機生成大於0小於1之間的小數
random.uniform(1,3)隨機生成大於1且小於3的小數
random.randint(1,5)隨機生成大於等於1且小於等於5之間的整數
random.randrange(1,10,2)大於等於1且小於10之間的奇數

random.choice([1,‘23‘,[4,5]])列表裏面隨機返回一個,參數是一個可叠代對象
random.sample([1,‘23‘,[4,5]],2)任意兩個組合
打亂順序:
item=[1,2,3,4]
random.shuffle(item)
print(item)
隨機驗證碼:
1.
ret=random.sample(range(10),6)
print(‘‘.join((str(i)for i in ret)))
2.
num_lst=[]
for i in range(6):
num=random.randint(0,9)
num_lst.append(str(num))
print(‘‘.join(num_lst)))
英文
def func(n):
ret=‘‘
for i in range(n):
num = random.randint(0,9)
ALPHA = chr(random.randint(65,90))
alpha=chr(random.randint(97,122))
value=random.choice([str(num),ALPHA,alpha])
ret +=value
return ret
print(func(6))
sys模塊:
與python解釋器連接的:
sys.argv文件的相對路徑。可以用來寫登錄
import sys
if sys.argv[1] ==‘alex‘ and if sys.argv[2]==‘123‘
print(‘登陸成功‘)
else:
print(‘登陸失敗‘)
sys.version 打印的是python的version可以用來判斷是否支持版本
用startswith來判斷開頭不支持的話 sys.exit()退出
sys.path 從前往後看模塊導入路徑
可以在sys.path後面.append將文件路徑加進去
sys.platform 返回操作系統平臺 判斷操作系統平臺 來更換路徑
OS模塊:
os模塊是與操作系統交互的一個接口
1.和目錄相關的
2.和路徑相關的
3.和文件相關的
4.和操作系統相關的
5.和執行系統命令相關的
一層用mkdir
多層用makedirs
os.listdir(os.getcwd())
將內容變成列表拿出來
os.stat(‘path/filename‘)獲取文件狀態stat結構
os.sep 路徑拼接
os.linesep 輸出當前平臺使用的行終止符
os.pathsep 輸出用於分割文件路徑的字符串
os.name看當前操作系統
os.system(‘dir‘)看當前目錄下的所有文件 有些像exec 執行命令用這個
os.popen有點像eval 要取得信息的話就用這個
os.path
os.path.abspath(path) 返回path規範化的絕對路徑
其實就是os.path.split(path)的第一個元素
os.path.dirname(path) 返回path目錄 basename返回最後一個文件目錄
os.path.join 可以將路徑拼接 會自己按照操作系統拼接
序列化模塊
將原本的字典,列表等內容轉換成一個字符串的過程就叫做序列化
文件裏只能存字符串
將程序中的數據類型轉換成str
應用:
1.存文件
2.網絡傳輸
序列化的目的
1.以某種存儲形實使自定義對象持久化
2.將對象從一個地方傳遞到另一個地方
3.使程序更具維護性
數據結構轉str是序列化
反著轉是反序列化
json模塊
dumps是序列化過程
loads是反序列化的過程
import json
d={‘k‘:‘v‘,‘k2‘:[1,2,3,4]}
sd=json.dumps(d)
print(sd,type(sd))
j=json.loads(sd)
print(j,type(j))
dump可以傳進文件
load可以從文件中拿出轉換
ensure_ascii=False 在往文件存的時候用
兩種方法:
1.序列化 dump dumps
2.反序列化 load loads
json一般只用於處理字典列表元祖
pickle模塊當自己定義了一些數據類型時可以用

pickle 可以序列化一些自定義的數據類型 遊戲
json 是所有編程語言通用的一種數據類型 網絡編程更多

shelve模塊python提供的序列化工具
import shelve
f = shelve.open(‘shelve_file‘)
f[‘key‘]={‘int‘:10} 可以多個key
f.close()

import shelve
f1 = shelve.open(‘shelve_file‘)
existing=f1[‘key‘]
f1.close()
這個模塊有限制,不支持多個應用同一時間往同一個DB進行寫操作。
設置writeback=True才能修改key ,否則key存在無法修改

Python學習day20 常用模塊部分