日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

内置模块

發布時間:2023/12/10 编程问答 44 豆豆
生活随笔 收集整理的這篇文章主要介紹了 内置模块 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1.序列化

1.1json模塊

json模塊是將滿足條件的數據結構轉化成特殊的字符串,并且也可以反序列化還原回去。

用于網絡傳輸:dumps、loads

用于文件寫讀:dump、load

dumps、loads

import json
dic = {'k1':'v1','k2':'v2','k3':'v3'}
str_dic = json.dumps(dic) ?#序列化:將一個字典轉換成一個字符串
print(type(str_dic),str_dic) ?#<class 'str'> {"k3": "v3", "k1": "v1", "k2": "v2"}
#注意,json轉換完的字符串類型的字典中的字符串是由""表示的
?
dic2 = json.loads(str_dic) ?#反序列化:將一個字符串格式的字典轉換成一個字典
#注意,要用json的loads功能處理的字符串類型的字典中的字符串必須由""表示
print(type(dic2),dic2) ?#<class 'dict'> {'k1': 'v1', 'k2': 'v2', 'k3': 'v3'}
?
?
list_dic = [1,['a','b','c'],3,{'k1':'v1','k2':'v2'}]
str_dic = json.dumps(list_dic) #也可以處理嵌套的數據類型
print(type(str_dic),str_dic) #<class 'str'> [1, ["a", "b", "c"], 3, {"k1": "v1", "k2": "v2"}]
list_dic2 = json.loads(str_dic)
print(type(list_dic2),list_dic2) #<class 'list'> [1, ['a', 'b', 'c'], 3, {'k1': 'v1', 'k2': 'v2'}]

dump、load

import json
f = open('json_file.json','w')
dic = {'k1':'v1','k2':'v2','k3':'v3'}
json.dump(dic,f) ?#dump方法接收一個文件句柄,直接將字典轉換成json字符串寫入文件
f.close()
# json文件也是文件,就是專門存儲json字符串的文件。
f = open('json_file.json')
dic2 = json.load(f) ?#load方法接收一個文件句柄,直接將文件中的json字符串轉換成數據結構返回
f.close()
print(type(dic2),dic2)

1.2 pickle模塊

pickle模塊是將Python所有的數據結構以及對象等轉化成bytes類型,然后還可以反序列化還原回去。

用于網絡傳輸:dumps、loads

用于文件寫讀:dump、load

dumps、loads

import pickle
dic = {'k1':'v1','k2':'v2','k3':'v3'}
str_dic = pickle.dumps(dic)
print(str_dic) ?# bytes類型
?
dic2 = pickle.loads(str_dic)
print(dic2) ? ?#字典
# 還可以序列化對象
import pickle
?
def func():
? ?print(666)
? ?
ret = pickle.dumps(func)
print(ret,type(ret)) ?# b'\x80\x03c__main__\nfunc\nq\x00.' <class 'bytes'>
?
f1 = pickle.loads(ret) ?# f1得到 func函數的內存地址
f1() ?# 執行func函數

?

dump、load

dic = {(1,2):'oldboy',1:True,'set':{1,2,3}}
f = open('pick序列化',mode='wb')
pickle.dump(dic,f)
f.close()
with open('pick序列化',mode='wb') as f1:
? ?pickle.dump(dic,f1)
?

2. os模塊

當前執行這個python文件的工作目錄相關的工作路徑
os.getcwd() 獲取當前工作目錄,即當前python腳本工作的目錄路徑 ?**
os.chdir("dirname") ?改變當前腳本工作目錄;相當于shell下cd ?**
os.curdir ?返回當前目錄: ('.') ?**
os.pardir ?獲取當前目錄的父目錄字符串名:('..') **
?
# 和文件夾相關
os.makedirs('dirname1/dirname2') ? ?可生成多層遞歸目錄 ?***
os.removedirs('dirname1') 若目錄為空,則刪除,并遞歸到上一級目錄,如若也為空,則刪除,依此類推 ***
os.mkdir('dirname') ? ?生成單級目錄;相當于shell中mkdir dirname ***
os.rmdir('dirname') ? ?刪除單級空目錄,若目錄不為空則無法刪除,報錯;相當于shell中rmdir dirname ***
# os.listdir('dirname') ? 列出指定目錄下的所有文件和子目錄,包括隱藏文件,并以列表方式打印 **
?
# 和文件相關
os.remove() ?刪除一個文件 ?***
os.rename("oldname","newname") ?重命名文件/目錄 ?***
os.stat('path/filename') ?獲取文件/目錄信息 **
?
# 和操作系統差異相關
# os.sep ? 輸出操作系統特定的路徑分隔符,win下為"\\",Linux下為"/" *
# os.linesep ? 輸出當前平臺使用的行終止符,win下為"\t\n",Linux下為"\n" *
# os.pathsep ? 輸出用于分割文件路徑的字符串 win下為;,Linux下為: *
# os.name ? 輸出字符串指示當前使用平臺。win->'nt'; Linux->'posix' *
# 和執行系統命令相關
# os.system("bash command") 運行shell命令,直接顯示 **
# os.popen("bash command).read() 運行shell命令,獲取執行結果 **
os.environ ?#獲取系統環境變量 **
?
#path系列,和路徑相關
os.path.abspath(path) #返回path規范化的絕對路徑 ***
os.path.split(path) #將path分割成目錄和文件名二元組返回 ***
os.path.dirname(path) #返回path的目錄。其實就是os.path.split(path)的第一個元素 **
os.path.basename(path) #返回path最后的文件名。如何path以/或\結尾,那么就會返回空值,即os.path.split(path)的第二個元素。 **
os.path.exists(path) ?#如果path存在,返回True;如果path不存在,返回False ***
os.path.isabs(path) ?#如果path是絕對路徑,返回True **
os.path.isfile(path) ?#如果path是一個存在的文件,返回True。否則返回False ***
os.path.isdir(path) ?#如果path是一個存在的目錄,則返回True。否則返回False ***
os.path.join(path1,path2,...) ?#將多個路徑組合后返回,第一個絕對路徑之前的參數將被忽略 ***
os.path.getatime(path) ?#返回path所指向的文件或者目錄的最后訪問時間 **
os.path.getmtime(path) ?#返回path所指向的文件或者目錄的最后修改時間 **
os.path.getsize(path) #返回path的大小 ***

3. sys模塊

sys.argv ? ? ? ? ? #命令行參數List,第一個元素是程序本身路徑
sys.exit(n) ? ? ? ?#退出程序,正常退出時exit(0),錯誤退出sys.exit(1)
sys.version ? ? ? ?#獲取Python解釋程序的版本信息
sys.path ? ? ? ? ? #返回模塊的搜索路徑,初始化時使用PYTHONPATH環境變量的值 ***
sys.platform ? ? ? #返回操作系統平臺名稱

4. hashlib模塊

密碼的加密。

文件一致性校驗。

4.1 密碼的加密

4.1.1 普通加密:
import hashlib
?
md5 = hashlib.md5()
md5.update('123456'.encode('utf-8'))
print(md5.hexdigest())
?
# 計算結果如下:
'e10adc3949ba59abbe56e057f20f883e'
?
# 驗證:相同的bytes數據轉化的結果一定相同
import hashlib
?
md5 = hashlib.md5()
md5.update('123456'.encode('utf-8'))
print(md5.hexdigest())
?
# 計算結果如下:
'e10adc3949ba59abbe56e057f20f883e'
?
# 驗證:不相同的bytes數據轉化的結果一定不相同
import hashlib
?
md5 = hashlib.md5()
md5.update('12345'.encode('utf-8'))
print(md5.hexdigest())
?
# 計算結果如下:
'827ccb0eea8a706c4c34a16891f84e7b'
4.1.2 加鹽加密

固定的鹽

ret = hashlib.md5('李四'.encode('utf-8')) # 李四就是固定的鹽 ret.update('a'.encode('utf-8')) print(ret.hexdigest())

?

動態的鹽

username = 'zhangsan66' ret = hashlib.md5(username[::2].encode('utf-8')) # 針對于每個賬戶,每個賬戶的鹽都不一樣 ret.update('a'.encode('utf-8')) print(ret.hexdigest())

4.2 文件的一致性校驗

def file_check(file_path):with open(file_path,mode='rb') as f1:sha256 = hashlib.sha256()while 1:content = f1.read(1024)if content:sha256.update(content)else:return sha256.hexdigest() print(file_check('pycharm-professional-2019.1.1.exe'))

5.時間有關的模塊

5.1 time模塊

(1)時間戳(timestamp) :通常來說,時間戳表示的是從1970年1月1日00:00:00開始按秒計算的偏移量。我們運行“type(time.time())”,返回的是float類型。

(2)格式化的時間字符串(Format String):

%y 兩位數的年份表示(00-99) %Y 四位數的年份表示(000-9999) %m 月份(01-12) %d 月內中的一天(0-31) %H 24小時制小時數(0-23) %I 12小時制小時數(01-12) %M 分鐘數(00=59) %S 秒(00-59) %a 本地簡化星期名稱 %A 本地完整星期名稱 %b 本地簡化的月份名稱 %B 本地完整的月份名稱 %c 本地相應的日期表示和時間表示 %j 年內的一天(001-366) %p 本地A.M.或P.M.的等價符 %U 一年中的星期數(00-53)星期天為星期的開始 %w 星期(0-6),星期天為星期的開始 %W 一年中的星期數(00-53)星期一為星期的開始 %x 本地相應的日期表示 %X 本地相應的時間表示 %Z 當前時區的名稱 %% %號本身

(3)元組(struct_time) :struct_time元組共有9個元素共九個元素:(年,月,日,時,分,秒,一年中第幾周,一年中第幾天等)

索引(Index)屬性(Attribute)值(Values)
0tm_year(年)比如2011
1tm_mon(月)1 - 12
2tm_mday(日)1 - 31
3tm_hour(時)0 - 23
4tm_min(分)0 - 59
5tm_sec(秒)0 - 60
6tm_wday(weekday)0 - 6(0表示周一)
7tm_yday(一年中的第幾天)1 - 366
8tm_isdst(是否是夏令時)默認為0
#導入時間模塊 >>>import time#時間戳 >>>time.time() 1500875844.800804#時間字符串 >>>time.strftime("%Y-%m-%d %X") '2017-07-24 13:54:37' >>>time.strftime("%Y-%m-%d %H-%M-%S") '2017-07-24 13-55-04'#時間元組:localtime將一個時間戳轉換為當前時區的struct_time time.localtime() time.struct_time(tm_year=2017, tm_mon=7, tm_mday=24,tm_hour=13, tm_min=59, tm_sec=37, tm_wday=0, tm_yday=205, tm_isdst=0)

時間轉換

# 格式化時間 ----> 結構化時間 ft = time.strftime('%Y/%m/%d %H:%M:%S') st = time.strptime(ft,'%Y/%m/%d %H:%M:%S') print(st) # 結構化時間 ---> 時間戳 t = time.mktime(st) print(t)# 時間戳 ----> 結構化時間 t = time.time() st = time.localtime(t) print(st) # 結構化時間 ---> 格式化時間 ft = time.strftime('%Y/%m/%d %H:%M:%S',st) print(ft)

5.2 datetime模塊

# datatime模塊 import datetime now_time = datetime.datetime.now() # 現在的時間 # 只能調整的字段:weeks days hours minutes seconds print(datetime.datetime.now() + datetime.timedelta(weeks=3)) # 三周后 print(datetime.datetime.now() + datetime.timedelta(weeks=-3)) # 三周前 print(datetime.datetime.now() + datetime.timedelta(days=-3)) # 三天前 print(datetime.datetime.now() + datetime.timedelta(days=3)) # 三天后 print(datetime.datetime.now() + datetime.timedelta(hours=5)) # 5小時后 print(datetime.datetime.now() + datetime.timedelta(hours=-5)) # 5小時前 print(datetime.datetime.now() + datetime.timedelta(minutes=-15)) # 15分鐘前 print(datetime.datetime.now() + datetime.timedelta(minutes=15)) # 15分鐘后 print(datetime.datetime.now() + datetime.timedelta(seconds=-70)) # 70秒前 print(datetime.datetime.now() + datetime.timedelta(seconds=70)) # 70秒后current_time = datetime.datetime.now() # 可直接調整到指定的 年 月 日 時 分 秒 等print(current_time.replace(year=1977)) # 直接調整到1977年 print(current_time.replace(month=1)) # 直接調整到1月份 print(current_time.replace(year=1989,month=4,day=25)) # 1989-04-25 18:49:05.898601# 將時間戳轉化成時間 print(datetime.date.fromtimestamp(1232132131)) # 2009-01-17

6.random模塊

>>> import random #隨機小數 >>> random.random() # 大于0且小于1之間的小數 0.7664338663654585 >>> random.uniform(1,3) #大于1小于3的小數 1.6270147180533838 #恒富:發紅包#隨機整數 >>> random.randint(1,5) # 大于等于1且小于等于5之間的整數 >>> random.randrange(1,10,2) # 大于等于1且小于10之間的奇數#隨機選擇一個返回 >>> random.choice([1,'23',[4,5]]) # #1或者23或者[4,5] #隨機選擇多個返回,返回的個數為函數的第二個參數 >>> random.sample([1,'23',[4,5]],2) # #列表元素任意2個組合 [[4, 5], '23']#打亂列表順序 >>> item=[1,3,5,7,9] >>> random.shuffle(item) # 打亂次序 >>> item [5, 1, 3, 7, 9] >>> random.shuffle(item) >>> item [5, 9, 7, 1, 3]

?

轉載于:https://www.cnblogs.com/zy740/p/11106144.html

總結

以上是生活随笔為你收集整理的内置模块的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。