json模塊是將知足條件的數據結構轉化成特殊的字符串,而且也能夠反序列化還原回去。php
用於網絡傳輸,和文件寫讀:dumps(轉化成str)loads(轉回去)python
網絡傳輸shell
import json #導入json模塊 dic={1:'李文浩',2:'聶冰',3:'趙秋雨'} new_dic=json.dumps(dic,ensure_ascii=False) #將dict格式轉化成str格式 print(new_dic,type(new_dic)#{"1": "李文浩", "2": "聶冰", "3": "趙秋雨"} <class 'str'> old_b=old_dic.encode('utf-8') #將str模式的字典轉化成byts類型編碼 #模擬網絡傳輸 new_b=old_b.decode('utf-8') #解碼 new_dic=json.loads(new_b) #轉化成字典類型 print(new_dic,type(new_dic))
文件寫入json
import json dic={1:'李文浩',2:'聶冰',3:'趙秋雨'} with open('json測試.json',mode='w',encoding='utf-8')as f1: old_dic=json.dumps(dic,ensure_ascii=False) f1.write(old_dic) with open('json測試.json',encoding='utf-8')as f2: print(json.loads(f2.read()))
dic1 = {'name':'oldboy1'} dic2 = {'name':'oldboy2'} dic3 = {'name':'oldboy3'} f = open('序列化',encoding='utf-8',mode='a') str1 = json.dumps(dic1) f.write(str1+'\n') str2 = json.dumps(dic2) f.write(str2+'\n') str3 = json.dumps(dic3) f.write(str3+'\n') f.close() f = open('序列化',encoding='utf-8') for line in f: print(json.loads(line))
用於單個數據文件寫讀: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)
用於網絡傳輸:dumps、loads網絡
import pickle dic={1:'李文浩',2:'聶冰',3:'趙秋雨'} str_dic=pickle.dumps(dic) print(str_dic) #bytes類型 dic2=pickle.loads(str_dic) print(dic2) #dict類型
用於文件寫讀: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)
os.getcwd() # 獲取當前工做目錄,即當前python腳本工做的目錄路徑 os.chdir("dirname") 改變當前腳本工做目錄;至關於shell下cd ** os.curdir 返回當前目錄: ('.') ** os.pardir 獲取當前目錄的父目錄字符串名:('..') **
和文件夾相關dom
os.makedirs('dirname1/dirname2') #遞歸生成目錄 *** os.removedirs('dirname1') #遞歸刪除目錄(目錄裏沒有文件(爲空)才能夠刪除) os.mkdir('絕對路徑/相對路徑') #建立一個文件夾 *** os.rmdir('絕對路徑/相對路徑') #刪除文件夾*** os.listdir('dirname') $列出指定目錄下的全部文件和子目錄,包括隱藏文件,並以列表打印
和文件相關函數
os.remove() $刪除一個文件 *** os.rename("oldname","newname") $重命名文件/目錄 *** os.stat('path/filename') 獲取文件/目錄信息 **
path系列,和路徑相關測試
os.path.abspath(path) $返回path規範化的絕對路徑 *** os.path.split(path) #將path分割成目錄和文件名二元組返回 *** os.path.dirname('E:\Python項目')# E:\ 獲取父級目錄 os.path.dirname(os.path.dirname(__file__))#獲取父級目錄的父級目錄 :獲取爺爺級目錄 os.path.basename('E:\Python項目')#Python項目 返回文件名 os.path.exists(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('D:','s23','day20','隨便')#路徑拼接,第一個絕對路徑以前的參數將被忽略 *** os.path.getatime(path) #返回path所指向的文件或者目錄的最後訪問時間 ** os.path.getmtime(path) #返回path所指向的文件或者目錄的最後修改時間 ** os.path.getsize(path) #返回path的大小 *** print(__file__) $動態獲取文件的絕對路徑
sys.argv 命令行參數List,第一個元素是程序自己路徑 sys.exit(n) 退出程序,正常退出時exit(0),錯誤退出sys.exit(1) sys.version 獲取Python解釋程序的版本信息 sys.path 返回模塊的搜索路徑,初始化時使用PYTHONPATH環境變量的值 *** sys.platform 返回操做系統平臺名稱
普通加密
import hashlib md5 = hashlib.md5() md5.update('要加密的字符串'.encode('utf-8')) print(md5.hexdigest())
加鹽加密
import hashlib md5=hashlib.md5('鹽'.encode('utf-8')) md5.update('要加密的字符串'.encode('utf-8')) print(md5.hexdigest())
username = '太白金星666' ret = hashlib.md5(username[::2].encode('utf-8')) # 針對於每一個帳戶,每一個帳戶的鹽都不同 ret.update('a'.encode('utf-8')) print(ret.hexdigest())
文件的一致性校驗
def md5_file(path): ret = hashlib.md5() with open(path,mode='rb') as f1: while 1: content = f1.read(1024) if content: ret.update(content) else: return ret.hexdigest() print(md5_file(r'E:\Python項目\python-3.7.4rc1-embed-win32.zip'))
#導入時間模塊 >>>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)
>>> 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]