4.random 隨機模塊 1. a z:97 ~ 122 A Z :65 ~ 90 5.序列化 1.json 模塊 兩組4個方法: 1. dumps() :將對象轉(序列化)成字元串 loads() :將字元串轉換(反序列化)成對象 2. dump() :將對象轉換(序列化)成 ...
4.random -- 隨機模塊
- a-z:97 ~ 122 A-Z :65 ~ 90
import random
#浮點數
print(random.random())#0~1,不可指定
print(random.uniform(1,10))#1~10#須指定
#整數
print(random.randint(1,10))[1~10]整數,閉區間
print(random.randrange(1,5,2))#(起始,終止,步長)
list1 = [1,2,3,4,5]
print(random.choice(list1)) #隨機選擇一個元素
print(random.choices(list1,k=2))#選擇兩個元素,會有重覆,k可以超範圍
print(random.sample(list1,k=2))#選擇兩個元素,k不可以超範圍。不會有重覆,除非只有兩個[1,1]
#打亂順序
list1 = [12,3,4,5,6,7,8,9]
random.shuffle(list1)
print(list1)
5.序列化
1.json 模塊
兩組4個方法:
- dumps() :將對象轉(序列化)成字元串
loads() :將字元串轉換(反序列化)成對象
import json
#列表
list1 = [1,22,3,3,45]
str1 = json.dumps(list1)#序列化
print(str1,type(str1))
list2 = json.loads(str1)#反序列化
print(list2,type(list2))
#字典
dict1 = {"k1":"無聊","k2":2}
str2 = json.dumps(dict1)#漢字會變成ASCII碼,
str3 = json.dumps(dict1,ensure_ascii=False)#將ASCII轉碼關閉
print(str2,type(str2))
dict2 = json.loads(str2)
print(dict2,type(dict2))
dump() :將對象轉換(序列化)成字元串,寫入文件
ldad():將文件中的字元串轉換(反序列化)成對象
import json
list1 = [1,22,3,3,45]
f = open('info','a')
json.dump(list1,f)#每次只能在同一行寫入
#解決:寫入多行
f.writelines(json.dumps(list1) + '\n')
f.close()
f1 = open('info','r')
l = json.load(f1)#只能讀取一行,多行或一行有多個數據會報錯
#解決:讀取多行
for i in f1:
l = json.loads(i)
print(l)
print(l,f1)
2.pickle 序列化
-- 近乎可將python所有對象進行轉換(python自帶,只有python可以用)
推薦使用json:jaon是各種語言通用的,pickle是python私有的
兩組4個方法:
1.
dumps:轉成類位元組
loads:轉回原對象
import pickle
#轉列表
list1 = [1,2,3,4,6]
str1 = pickle.dumps(list1)#轉換成類似位元組
print(str1,type(str1))
list2 = pickle.loads(str1)
print(list2,type(list2))
#轉字典
dict1 = {'k1':'v1'}
str1 = pickle.dumps(dict1)
print(str1)
print(pickle.loads(str1))
#轉函數名
def func():
print(111)
fun = pickle.dumps(func)
print(fun)
pickle.loads(fun)()
dump::轉成類位元組寫入文件
load:讀取文件並還原成原對象
import pickle
dic = {'user':'你去'}
pickle.dump(dic,open("info",'wb'))
print(pickle.load(open("info",'rb')))
#寫入多行,讀取多行
f = open("info",'wb')
s = "\n".encode("utf-8")
f.write(pickle.dumps(dic) + s)
f.close()
f1 = open("info",'rb')
for i in f1:
print(pickle.loads(i))
6.os模塊 -- 與操作系統交互的介面
(程式員通過python向操作系統發送指令)
共四組:
- 工作目錄
import os
print(os.getcwd())#獲取當前工作目錄 ***
os.chdir("D:\\")#路徑切換***
print(os.curdir)#當前 .
print(os.pardir)#父級 ..
- 文件夾:***
import os
os.mkdir('tt')#創建一個文件夾,不能是跨級創建
os.rmdir('tt')#刪除一個空的文件夾
os.makedirs("tt/ss/dd")#遞歸創建文件夾
os.removedirs("tt/ss/dd")#遞歸刪除文件夾
print(os.listdir(r"E:\python\oldboy\py\190726"))#返回目錄下文件
- 文件
import os
os.rename()#修改文件名***
os.remove("info")#刪除文件,不能撤銷***
print(os.path.getatime(r"E:\python\oldboy\py\190726\01.py"))#最後修改的時間
print(os.path.getctime(r"E:\python\oldboy\py\190726\01.py"))#最後的訪問時間
print(os.path.getmtime(r"E:\python\oldboy\py\190726\01.py"))#最後的訪問時間
print(os.path.getsize(r"E:\python\oldboy\py\190726\01.py"))#獲取當前文件的大小,不用來判斷文件夾。***
#要寫一個函數實現,先判斷是否為文件:
#os.listdir() 方法用於返回指定的文件夾包含的文件或文件夾的名字的列表
import os
for i in os.listdir(“hahaha”):
if os.path.isfile(i):
print(os.path.getsize(“hahaha”+os.sep+i))
- 路徑
import os
print(os.path.abspath(r"01.py"))#通過相對路徑獲取絕度路徑 ***
print(os.path.split(os.path.abspath(r"01.py")))#將絕對路徑按照最後一個'\'切割(路徑,文件名)***
print(os.path.dirname(r"E:\python\oldboy\py\190726\01.py"))#通過絕對路徑獲取路徑 ***
print(os.path.basename(r"E:\python\oldboy\py\190726\01.py"))#通過路徑獲獲取最後輸入的最後一級文件名 **
print(os.path.exists(r"E:\python\oldboy\py\190726\01.py"))#判斷這個路徑是否存在 ***
print(os.path.isdir(r"E:\python\oldboy\py\190726\01.py"))#判斷是不是存在的目錄 ***
print(os.path.isfile(r"01.py"))#判斷是不是存在的文件 ***
print(os.path.isabs(r"E:\python\oldboy\py\190726\01.py"))#判斷是不是絕對路徑
print(os.path.join("D:\\","tt","dd"))#路徑拼接 ***
7.sys -- 系統模塊,與python解釋器交互的介面
import sys
sys.argv#命令行傳參
print(sys.argv)
sys.exit()#退出程式,可以修改參數,0為正常退出,1為出錯
print(sys.version)#獲取當前解釋器版本
print(sys.path())#添加自定義模塊查找路徑
print(sys.platform)#區分操作系統,進行相關邏輯操作