常見模塊(續上次)
阿新 • • 發佈:2017-08-09
eva 文件路徑 如何 shelve 格式化時間 寫入 python ... 字符串轉換
一.time模塊
常用方法:
time.time() 獲取當前時間戳
time.sleep(t) 推遲指定的時間運行
1.表示時間的三種方式:
時間戳,格式化的時間字符串,時間元組
1 #時間戳: 2 print(time.time()) 3 #1502176744.8150175 4 5 #格式化時間字符串 6 print(time.strftime(‘%Y/%m/%d %H:%M:%S‘)) 7 2017/08/08 15:27:19 8 9 #時間元組 10 #localtime將一個時間戳轉換為當前時區的struct_time 11t = time.local() 12 #time.struct_time(tm_year=2017, tm_mon=8, tm_mday=8, tm_hour=15, tm_min=30, tm_sec=45, tm_wday=1, tm_yday=220, tm_isdst=0)
總結:小結:時間戳是計算機能夠識別的時間;時間字符串是人能夠看懂的時間;元組則是用來操作時間的
#幾種格式之間的轉換 #時間戳-->結構化時間 #time.gmtime() #英國倫敦當地時間 UTC #time.localtime() #當地時間 #結構化時間-->時間戳 #time_tuple = time.localtime(1500000000)#time.mktime(time_tuple) #1500000000.0 #結構化時間-->字符串格式化時間 #time.strftime("%Y-%m-%d",time.localtime(1500000000)) #‘2017-07-14‘ #字符串格式化時間-->結構化時間 #time.strptime("07/24/2017","%m/%d/%Y") #time.struct_time(tm_year=2017, tm_mon=7, tm_mday=24, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=0, tm_yday=205, tm_isdst=-1)
#結構化時間-->%a %d %d %H:%M:%S %Y串#time.asctime(time.localtime(1500000000)) #‘Fri Jul 14 10:40:00 2017‘ #time.asctime() #‘Mon Jul 24 15:18:33 2017‘ #%a %d %d %H:%M:%S %Y串 --> 結構化時間 #time.ctime(時間戳) 如果不傳參數,直接返回當前時間的格式化串 #time.ctime() #‘Tue Aug 8 15:56:20 2017‘ #time.ctime(1500000000) #‘Fri Jul 14 10:40:00 2017‘
二.random模塊
#import time #隨機小數 #random.random() (0-1小數) #0.9167746266539144 #random.uniform(1,3) (1-3小數) #1.9542609515193614 #隨機整數 #random. randint(1,5) (1-5間隨機整數,可取到5) #2 #隨機選擇一個或者多個返回 #random.choice(1,5,[5,6]) #random.sample([[4,5],[89,58],99,66],2) #2為返回的個數 #打亂列表順序 #li = [4,5,6,8,2,7] #random.shuffle(li) (返回值為None) #print(li) #[5, 6, 2, 7, 8, 4] (每次返回結果順序不一樣)
三.osmo模塊
# 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.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不存在,返回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的大小
# stat 結構: # # st_mode: inode 保護模式 # st_ino: inode 節點號。 # st_dev: inode 駐留的設備。 # st_nlink: inode 的鏈接數。 # st_uid: 所有者的用戶ID。 # st_gid: 所有者的組ID。 # st_size: 普通文件以字節為單位的大小;包含等待某些特殊文件的數據。 # st_atime: 上次訪問的時間。 # st_mtime: 最後一次修改的時間。 # st_ctime: 由操作系統報告的"ctime"。在某些系統上(如Unix)是最新的元數據更改的時間,在其它系統上(如Windows)是創建時間(詳細信息參見平臺的文檔)。
四.sys模塊
sys模塊是與python解釋器交互的一個接口
#sys.argv 命令行參數List,第一個元素是程序本身路徑 #sys.exit(n) 退出程序,正常退出時exit(0) #sys.version 獲取Python解釋程序的版本信息 #sys.maxint 最大的Int值 #sys.path 返回模塊的搜索路徑,初始化時使用PYTHONPATH環境變量的值 #sys.platform 返回操作系統平臺名稱
五.序列化模塊
序列化定義:將原本列表、字典等內容專戶為字符串的過程
eval():將字符串str當成有效的表達式來求值並返回計算結果
缺點:雖然eval()也能實現此功能,但是安全性差
1、以某種存儲形式使自定義對象持久化;
2、將對象從一個地方傳遞到另一個地方。3、使程序更具維護性。
對象持久化(對象持久化是指將內存中的對象保存到可永久保存的存儲設備中(如磁盤)的一種技術)
Json模塊(dump,dumps,load,loads)
#dumps loads # import json # dic = {‘k1‘:56,‘k2‘:85,‘k3‘:‘egon‘} # dic_str = json.dumps(dic) # print(type(dic_str),dic_str) #序列化 # <class ‘str‘> {"k1": 56, "k2": 85, "k3": "egon"} # str_dict = json.loads(dic_str) # print(type(str_dict),str_dict) #反序列化 # <class ‘dict‘> {‘k1‘: 56, ‘k2‘: 85, ‘k3‘: ‘egon‘} #也可嵌套使用 # import json # l = [1,[1,2,3],{‘k1‘:‘egon‘,‘k2‘:‘alex‘},5] # l_str = json.dumps(l) # print(type(l_str),l_str) # # <class ‘str‘> [1, [1, 2, 3], {"k1": "egon", "k2": "alex"}, 5] # str_l = json.loads(l_str) # print(type(str_l),str_l) # <class ‘list‘> [1, [1, 2, 3], {‘k1‘: ‘egon‘, ‘k2‘: ‘alex‘}, 5]
import json # f1 = open(‘json_file‘,‘w‘) # dic = {‘k1‘:‘zhiku‘,‘k2‘:‘huawei‘,‘k3‘:‘chuanqi‘} # json.dump(dic,f1) # f.close() #dump方法接收一個文件句柄,直接將字典轉換成json字符串寫入文件 # f2 = open(‘json_file‘) # dic1 = json.load(f2) # print(type(dic1),dic1) # <class ‘dict‘> {‘k1‘: ‘zhiku‘, ‘k2‘: ‘huawei‘, ‘k3‘: ‘chuanqi‘} #load方法接收一個文件句柄,直接將文件中的json字符串轉換成數據結構返回
json&pickle模塊
- json,用於字符串 和 python數據類型間進行轉換
- pickle,用於python特有的類型 和 python的數據類型間進行轉換
- pickle模塊提供了四個功能:dumps、dump(序列化,存)、loads(反序列化,讀)、load (不僅可以序列化字典,列表...可以把python中任意的數據類型序列化)
import pickle dic = {‘k1‘:‘v1‘,‘k2‘:‘v2‘,‘k3‘:‘v3‘} str_dic = pickle.dumps(dic) print(str_dic) #一串二進制內容 #b‘\x80\x03}q\x00(X\x02\x00\x00\x00k1q\x01X\x02\x00\x00\x00v1q\x02X\x02\x00\x00\x00k2q\x03X\x02\x00\x00\x00v2q\x04X\x02\x00\x00\x00k3q\x05X\x02\x00\x00\x00v3q\x06u.‘ dic2 = pickle.loads(str_dic) print(dic2) #字典 #{‘k1‘: ‘v1‘, ‘k2‘: ‘v2‘, ‘k3‘: ‘v3‘} import time struct_time = time.localtime(1000000000) print(struct_time) #time.struct_time(tm_year=2001, tm_mon=9, tm_mday=9, tm_hour=9, tm_min=46, tm_sec=40, tm_wday=6, tm_yday=252, tm_isdst=0) f = open(‘pickle_file‘,‘wb‘) pickle.dump(struct_time,f) f.close() f = open(‘pickle_file‘,‘rb‘) struct_time2 = pickle.load(f) print(struct_time.tm_year) #2001
shelve模塊
shelve只提供給我們一個open方法,是用key來訪問的,使用起來和字典類似。
#import shelve # f = shelve.open(‘shelve_file‘) # f[‘key‘] ={‘k1‘:‘niucha‘,‘k2‘:‘daoxiang‘,‘k3‘:‘egon‘}#如果k不存在則報錯 # f.close() # # f1 = shelve.open(‘shelve_file‘) # existing = f1[‘key‘] # f1.close() # print(existing) # {‘k1‘: ‘niucha‘, ‘k2‘: ‘daoxiang‘, ‘k3‘: ‘egon‘}
這個模塊有個限制:不支持多個程序同一時間往同一個文件中進行寫操作,如果只是讀文件,可以用其打開。
shelve在默認情況下是不會記錄待持久化對象的任何修改的,所以我們在shelve.open()時候需要修改默認參數,否則對象的修改不會保存。
# import shelve # f = shelve.open(‘shelve_file‘) # print(f[‘key‘]) # f[‘key‘][‘new_value‘] = ‘this is a beautiful girl‘ # print(f[‘key‘]) # f.close() # import shelve # f1 = shelve.open(‘shelve_file‘,writeback=True) # print(f1[‘key‘]) # f1[‘key‘][‘new_value‘] = ‘this is a beautiful girl‘ # print(f1[‘key‘]) # f1.close()
#{‘k1‘: ‘niucha‘, ‘k2‘: ‘daoxiang‘, ‘k3‘: ‘egon‘, ‘new_value‘: ‘this is a beautiful girl‘}
常見模塊(續上次)