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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python常用模块(一)

發布時間:2024/9/30 python 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python常用模块(一) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

time模塊

學習python中有什么不懂的地方,小編這里推薦加小編的python學習群:895 817 687有任何不懂的都可以在里面交流,還有很好的視頻教程pdf學習資料,大家一起學習交流!

常用表示時間方式: 時間戳,格式化的時間字符串,元組(struct_time)

UTC(Coordinated Universal Time,世界協調時)亦即格林威治天文時間,世界標準時間。在中國為UTC+8。DST(Daylight Saving Time)即夏令時。

時間戳(timestamp)的方式:通常來說,時間戳表示的是從1970年1月1日00:00:00開始按秒計算的偏移量。

元組(struct_time)方式:struct_time元組共有9個元素,返回struct_time的函數主要有gmtime(),localtime(),strptime()。


1. 時間戳轉換成struct_time

>>> import time >>> time.time() 1513821691.159022 >>> time.gmtime() # 轉換的是UTC時間 time.struct_time(tm_year=2017, tm_mon=12, tm_mday=21, tm_hour=2, tm_min=1, tm_sec=40, tm_wday=3, tm_yday=355, tm_isdst=0) >>> x = time.localtime() #轉換的是本地時間(UTC+8) >>> print(x) time.struct_time(tm_year=2017, tm_mon=12, tm_mday=21, tm_hour=10, tm_min=1, tm_sec=49, tm_wday=3, tm_yday=355, tm_isdst=0)tm_wday(0-6) 星期一是0,星期天是6

2. struct_time轉換成時間戳

>>> time.mktime(x) #x = time.localtime() 1513821709.0

3.struct_time轉換成format_time

%a 本地(locale)簡化星期名稱 %A 本地完整星期名稱 %b 本地簡化月份名稱 %B 本地完整月份名稱 %c 本地相應的日期和時間表示 %d 一個月中的第幾天(01 - 31%H 一天中的第幾個小時(24小時制,00 - 23%I 第幾個小時(12小時制,01 - 12%j 一年中的第幾天(001 - 366%m 月份(01 - 12%M 分鐘數(00 - 59%p 本地am或者pm的相應符 一 %S 秒(01 - 61) 二 %U 一年中的星期數。(00 - 53星期天是一個星期的開始。)第一個星期天之前的所有天數都放在第0周。 %w 一個星期中的第幾天(0 - 60是星期天) 三 %W 和%U基本相同,不同的是%W以星期一為一個星期的開始。 %x 本地相應日期 %X 本地相應時間 %y 去掉世紀的年份(00 - 99%Y 完整的年份 %Z 時區的名字(如果不存在為空字符) %%%’字符 >>> import time >>> time.time() 1513822266.5659332 >>> x = time.localtime() >>> print(x) time.struct_time(tm_year=2017, tm_mon=12, tm_mday=21, tm_hour=10, tm_min=11, tm_sec=31, tm_wday=3, tm_yday=355, tm_isdst=0) >>> >>> time.strftime("%Y%m%d %H:%M:%S",x) '20171221 10:11:31' >>>#語法: #strftime(format,[tuple])

4 format_time轉換成struct_time

>>> time.strftime("%Y%m%d %H:%M:%S",x) '20171221 10:11:31' >>> >>> >>> time.ct_time(tm_year=2017, tm_mon=12, tm_mday=21, tm_hour=10, tm_min=11, tm_sec=31, tm_wday=3, tm_yday=355, tm_isdst=-1) 用法: strp('string',format

5.結構化時間轉換成字符串時間

import time x = time.localtime() print(x) print(time.asctime(x))結果: time.struct_time(tm_year=2017, tm_mon=12, tm_mday=21, tm_hour=10, tm_min=29, tm_sec=58, tm_wday=3, tm_yday=355, tm_isdst=0)Thu Dec 21 10:29:58 2017

6.時間戳轉換成字符串

>>> import time >>> time.time() 1513823679.9577746 >>> print(time.ctime()) Thu Dec 21 10:34:50 2017

random模塊

>>> import random >>> random.random() # 0~1 隨機浮點數 0.6990063739837862 >>> random.randint(1,7) #隨機整數1~7 5 >>> random.randrange(1,7) #隨機整數,不包括7 4 >>> random.choice('hello world') #獲取一個隨機元素 'l' >>> random.choice(['1','2','3',]) '2'>>> random.sample([1,2,3,4,5],3) [1, 2, 4] random.sample的函數原型為:random.sample(sequence, k),從指定 序列中隨機獲取指定長度的片

隨機驗證碼

import random def v_code():code = ""for i in range(4):num = random.randint(0,9) #隨機選擇0~9A1Z1 = chr(random.randint(65,90)) #隨機選擇A~Za1z1 = chr(random.randint(97,122)) #隨機選擇a~zadd = random.choice([num,A1Z1,a1z1]) #隨機選擇其中一個code = "".join([code,str(add)]) #拼接一次選到的元素return code #返回驗證碼# print(v_code())結果: 5adc

OS模塊

os.getcwd() #獲取當前工作目錄,即當前python腳本工作的目錄路徑os.chdir()  #當前目錄os.chdir("dirname") #改變當前腳本工作目錄;相當于shell下cd os.chdir(r"c:\Users")os.curdir #返回當前目錄: ('.'),相當于shell下cd.os.pardir # 獲取當前目錄的父目錄字符串名:('..'),相當于shell下cd.. 返回上一層目錄os.makedirs('dirname1/dirname2') #可生成多層遞歸目錄 os.makedirs(r"c:\a\b\c")os.removedirs('dirname1') #若目錄為空,則刪除,并遞歸到上一級目錄,如若也為空,則刪除,依此類推 os.removedirs(r"c:\a\b\c")os.mkdir('dirname') #生成單級目錄;相當于shell中mkdir dirnameos.rmdir('dirname') # 刪除單級空目錄,若目錄不為空則無法刪除,報錯;相當于shell中rmdir dirnameos.listdir('dirname') #列出指定目錄下的所有文件和子目錄,包括隱藏文件,并以列表方式打印 os.listdir("c:\\test")os.remove() #刪除一個文件 os.remove(r"c:\oldboy.txt")os.rename("oldname","newname") #重命名文件/目錄 os.rename("c:\\test","c:\\test2") os.stat('path/filename') # 獲取文件/目錄信息 os.stat("c:\\test2")os.sep #輸出操作系統特定的路徑分隔符,win下為"\\",Linux下為"/"os.linesep #輸出當前平臺使用的行終止符,win下為"\r\n",Linux下為"\n"os.pathsep #輸出用于分割文件路徑的字符串 os.name #輸出字符串指示當前使用平臺。win->'nt'; Linux->'posix'os.system("bash command") #運行shell命令,直接顯示os.environ #獲取系統環境變量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不存在,返回Falseos.path.isabs(path) #如果path是絕對路徑,返回Trueos.path.isfile(path) #如果path是一個存在的文件,返回True。否則返回Falseos.path.isdir(path) #如果path是一個存在的目錄,則返回True。否則返回Falseos.path.join(path1[, path2[, ...]]) #將多個路徑組合后返回,第一個絕對路徑之前的參數將被忽略os.path.getatime(path) #返回path所指向的文件或者目錄的最后存取時間os.path.getmtime(path) #返回path所指向的文件或者目錄的最后修改時間os.path.getsize(path) #返回path的大小

sys模塊

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

shutil模塊

高級的 文件、文件夾、壓縮包 處理模塊

shutil.copy(src, dst)
拷貝文件和權限

1 import shutil 2 3 shutil.copy('f1.log', 'f2.log')

shutil.copy2(src, dst)
拷貝文件和狀態信息

shutil.copystat(src, dst)
僅拷貝狀態的信息,包括:mode bits, atime, mtime, flags

shutil.copymode(src, dst)
僅拷貝權限。內容、組、用戶均不變

shutil.copytree(src, dst, symlinks=False, ignore=None)
遞歸的去拷貝文件夾

shutil.rmtree(path[, ignore_errors[, onerror]])
遞歸的去刪除文件

Json和pickle模塊
什么是序列化?

我們把對象(變量)從內存中變成可存儲或傳輸的過程稱之為序列化

為什么要序列化?

1:持久保存狀態

需知一個軟件/程序的執行就在處理一系列狀態的變化,在編程語言中,'狀態’會以各種各樣有結構的數據類型(也可簡單的理解為變量)的形式被保存在內存中。

內存是無法永久保存數據的,當程序運行了一段時間,我們斷電或者重啟程序,內存中關于這個程序的之前一段時間的數據(有結構)都被清空了。

在斷電或重啟程序之前將程序當前內存中所有的數據都保存下來(保存到文件中),以便于下次程序執行能夠從文件中載入之前的數據,然后繼續執行,這就是序列化。

具體的來說,你玩使命召喚闖到了第13關,你保存游戲狀態,關機走人,下次再玩,還能從上次的位置開始繼續闖關?;蛉?#xff0c;虛擬機狀態的掛起等。

2:跨平臺數據交互

序列化之后,不僅可以把序列化后的內容寫入磁盤,還可以通過網絡傳輸到別的機器上,如果收發的雙方約定好實用一種序列化的格式,那么便打破了平臺/語言差異化帶來的限制,實現了跨平臺數據交互。

反過來,把變量內容從序列化的對象重新讀到內存里稱之為反序列化,即unpickling。

JSON和Python內置的數據類型對應如下:

1 import json23 dic={'name':'alvin','age':23,'sex':'male'}4 print(type(dic))#<class 'dict'>56 j=json.dumps(dic)7 print(type(j))#<class 'str'>89 10 f=open('序列化對象','w') 11 f.write(j) #-------------------等價于json.dump(dic,f) 12 f.close() 13 #-----------------------------反序列化<br> 14 import json 15 f=open('序列化對象') 16 data=json.loads(f.read())# 等價于data=json.load(f)import json #dct="{'1':111}"#json 不認單引號 #dct=str({"1":111})#報錯,因為生成的數據還是單引號:{'one': 1}dct='{"1":"111"}' print(json.loads(dct))#conclusion: # 無論數據是怎樣創建的,只要滿足json格式,就可以json.loads出來,不一定非要dumps的數據才能loads

實例

import json# 序列化 info = {'name':'derek','age':'22'}with open('test','w') as f:f.write(json.dumps(info))# 反序列化 with open('test','r') as f:info = json.loads(f.read())print(info)

pickle (它只能用于Python)

1 import pickle23 dic={'name':'alvin','age':23,'sex':'male'}45 print(type(dic))#<class 'dict'>67 j=pickle.dumps(dic)8 print(type(j))#<class 'bytes'>9 10 11 f=open('序列化對象_pickle','wb')#注意是w是寫入str,wb是寫入bytes,j是'bytes' 12 f.write(j) #-------------------等價于pickle.dump(dic,f) 13 14 f.close() 15 #-------------------------反序列化 16 import pickle 17 f=open('序列化對象_pickle','rb') 18 19 data=pickle.loads(f.read())# 等價于data=pickle.load(f) 20 21 22 print(data['age'])

總結:

Json模塊提供了四個功能:dumps、dump、loads、load

pickle模塊提供了四個功能:dumps、dump、loads、load

dump()函數接受一個文件句柄和一個數據對象作為參數,把數據對象以特定的格式保存 到給定的文件中。當我們使用load()函數從文件中取出已保存的對象時,pickle知道如何恢復這些對象到它們本來的格式。

dumps()函數執行和dump() 函數相同的序列化。取代接受流對象并將序列化后的數據保存到磁盤文件,這個函數簡單的返回序列化的數據。

loads()函數執行和load() 函數一樣的反序列化。取代接受一個流對象并去文件讀取序列化后的數據,它接受包含序列化后的數據的str對象, 直接返回的對象。

未完待續

總結

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

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