python全栈开发 * 24 知识点汇总 * 180705
生活随笔
收集整理的這篇文章主要介紹了
python全栈开发 * 24 知识点汇总 * 180705
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
24 模塊
-------序列化
一.什么是模塊 模塊:py文件就是一個模塊.
二.模塊的分類:
(1)內置模塊 (登錄模塊,時間模塊,sys模塊,os模塊)
(2)擴展模塊 (itchat 微信有關,爬蟲,beautiful soup 網址(http://pypi.org)
(3)自定義模塊
三.序列化模塊及分類.
1創造一個序列化字符串
2.序列化模塊分類
(1).json 適用于不同語言之間,但可支持數據類型有限,str,int,list,dict,bool 作用:方便數據傳輸 .
(2).pickle 只用于python語言之間的傳輸,可支持python所有的數據類型
(3)shelve 只是python的一個小工具(文件方面)
3.json 的用法
(1).json的意義 a.數據通過網絡發送給別人;
b.寫入文件也用到json
(2)dumps,loads (將數據用于網絡傳輸 ; 多個數據寫入一個文件)
網絡傳輸:
import json
dic={"alex":["男","中國",1000]}
ret=json.dumps(dic)
ret1=json.dumps(dic,ensure_ascii=False)
print(ret,type(ret)) # {"alex": ["\u7537", "\u4e2d\u56fd", 1000]} <class 'str'>
print(ret1,type(ret1)) #{"alex": ["男", "中國", 1000]} <class 'str'>
ret2=json.loads(ret)
print(ret2,type(ret2)) # {'alex': ['男', '中國', 1000]} <class 'dict'>
文件操作: 多個數據寫入一個文件
import json
dic={"alex":["男","中國",1000]}
l1=["包寶寶","包大寶寶","包小寶寶","包老寶寶","真的很好看"]
dic1 = {"alex": ('women','women','老女人')}
f=open("json1",encoding="utf-8",mode="w")
s1=json.dumps(dic,ensure_ascii=False)
f.write(s1+"\n")
s2=json.dumps(dic1,ensure_ascii=False)
f.write(s2+"\n")
s3=json.dumps(l1,ensure_ascii=False)
f.write(s3+"\n")
f.close() # 寫文件
f1=open("json1",encoding="utf-8") # 讀文件
for line in f1: #{'alex': ['男', '中國', 1000]} <class 'dict'>
ret=json.loads(line) #{'alex': ['women', 'women', '老女人']} <class 'dict'>
print(ret,type(ret)) # ['包寶寶', '包大寶寶', '包小寶寶', '包老寶寶', '真的很好看'] <class 'list'>
(3)dump,load (單個數據寫入一個文件)
import json
dict={'alex':["男",1000,"中國"]}
f=open("json1",encoding="utf-8",mode="a")
json.dump(dict,f,ensure_ascii=False) # 寫文件
f.close()
f1=open("json1",encoding="utf-8") # 讀文件
ret=json.load(f1)
print(ret,type(ret)) # {'alex': ['男', 1000, '中國']} <class 'dict'>
(4).json的缺點,將數據寫入文件時只能寫一個,如果將多個序列化字符串寫入文件,反序列化會出錯.(dump.load)
(5).json的其他參數
sort_keys=True( 按首字母的ascii碼的位置排序)
ensure_ascii 顯示中文
indent=2 key 的縮進為2
separators=(",",":") "," 鍵值對之間的分割符,":"鍵與值之間的分割符.
(6).特別注意: 字典序列化為字符串,key 必須是字符串類型,數字會變為字符串.
4.pickle 的用法
(1)dumps loads 用于網絡傳輸
import pickle
dic={"包寶寶":["包大寶寶","包小寶寶","包老寶寶","真的很好看"]}
ret=pickle.dumps(dic)
print(ret,type(ret)) # <class 'bytes'>
ret2=pickle.loads(ret)
print(ret2,type(ret2)) # {'包寶寶': ['包大寶寶', '包小寶寶', '包老寶寶', '真的很好看']} <class 'dict'>
(2)dump load 文件操作
單個數據寫入一個文件:
import pickle
dic={"包寶寶":["包大寶寶","包小寶寶","包老寶寶","真的很好看"]}
f=open("pickle",mode="wb")
pickle.dump(dic,f)
f.close()
f1=open("pickle",mode="rb")
ret=pickle.load(f1)
print(ret,type(ret)) #{'包寶寶': ['包大寶寶', '包小寶寶', '包老寶寶', '真的很好看']} <class 'dict'>
多個數據寫入一個文件:
import pickle
dic={"包寶寶":["包大寶寶","包小寶寶","包老寶寶","真的很好看"]}
dic1={'alex':["男",1000,"中國"]}
dic2 = {"alex1": ('women','women','老女人')}
f1=open("pickle1",mode="wb")
pickle.dump(dic,f1)
pickle.dump(dic1,f1)
pickle.dump(dic2,f1)
f1.close()
f2=open("pickle1",mode="rb")
# print(pickle.load(f2)) # {'包寶寶': ['包大寶寶', '包小寶寶', '包老寶寶', '真的很好看']}
# print(pickle.load(f2)) # {'alex': ['男', 1000, '中國']}
# print(pickle.load(f2)) # {'alex1': ('women', 'women', '老女人')}
while True:
try:
print(pickle.load(f2))
except EOFError:
break
5.shelve 的用法 與文件相關,只能在python中用.
給文件寫入一個鍵值對; 并輸出鍵值對的值
import shelve
f = shelve.open('shelve_file')
f['key'] = {'int':10, 'float':9.5, 'string':'Sample data'} #直接對文件句柄操作,就可以存入數據
f.close()
f1 = shelve.open('shelve_file')
existing=f1["key"] #{'int': 10, 'float': 9.5, 'string': 'Sample data'}
f1.close()
print(existing)
#給key的值(字典)添加一個鍵值對.
import shelve
f2 = shelve.open('shelve_file',writeback=True) # writeback允許給文件加值
f2['key']['new_value'] = 'this was not here before'
print(f2['key'])
f2.close()
-------序列化
一.什么是模塊 模塊:py文件就是一個模塊.
二.模塊的分類:
(1)內置模塊 (登錄模塊,時間模塊,sys模塊,os模塊)
(2)擴展模塊 (itchat 微信有關,爬蟲,beautiful soup 網址(http://pypi.org)
(3)自定義模塊
三.序列化模塊及分類.
1創造一個序列化字符串
2.序列化模塊分類
(1).json 適用于不同語言之間,但可支持數據類型有限,str,int,list,dict,bool 作用:方便數據傳輸 .
(2).pickle 只用于python語言之間的傳輸,可支持python所有的數據類型
(3)shelve 只是python的一個小工具(文件方面)
3.json 的用法
(1).json的意義 a.數據通過網絡發送給別人;
b.寫入文件也用到json
(2)dumps,loads (將數據用于網絡傳輸 ; 多個數據寫入一個文件)
網絡傳輸:
import json
dic={"alex":["男","中國",1000]}
ret=json.dumps(dic)
ret1=json.dumps(dic,ensure_ascii=False)
print(ret,type(ret)) # {"alex": ["\u7537", "\u4e2d\u56fd", 1000]} <class 'str'>
print(ret1,type(ret1)) #{"alex": ["男", "中國", 1000]} <class 'str'>
ret2=json.loads(ret)
print(ret2,type(ret2)) # {'alex': ['男', '中國', 1000]} <class 'dict'>
文件操作: 多個數據寫入一個文件
import json
dic={"alex":["男","中國",1000]}
l1=["包寶寶","包大寶寶","包小寶寶","包老寶寶","真的很好看"]
dic1 = {"alex": ('women','women','老女人')}
f=open("json1",encoding="utf-8",mode="w")
s1=json.dumps(dic,ensure_ascii=False)
f.write(s1+"\n")
s2=json.dumps(dic1,ensure_ascii=False)
f.write(s2+"\n")
s3=json.dumps(l1,ensure_ascii=False)
f.write(s3+"\n")
f.close() # 寫文件
f1=open("json1",encoding="utf-8") # 讀文件
for line in f1: #{'alex': ['男', '中國', 1000]} <class 'dict'>
ret=json.loads(line) #{'alex': ['women', 'women', '老女人']} <class 'dict'>
print(ret,type(ret)) # ['包寶寶', '包大寶寶', '包小寶寶', '包老寶寶', '真的很好看'] <class 'list'>
(3)dump,load (單個數據寫入一個文件)
import json
dict={'alex':["男",1000,"中國"]}
f=open("json1",encoding="utf-8",mode="a")
json.dump(dict,f,ensure_ascii=False) # 寫文件
f.close()
f1=open("json1",encoding="utf-8") # 讀文件
ret=json.load(f1)
print(ret,type(ret)) # {'alex': ['男', 1000, '中國']} <class 'dict'>
(4).json的缺點,將數據寫入文件時只能寫一個,如果將多個序列化字符串寫入文件,反序列化會出錯.(dump.load)
(5).json的其他參數
sort_keys=True( 按首字母的ascii碼的位置排序)
ensure_ascii 顯示中文
indent=2 key 的縮進為2
separators=(",",":") "," 鍵值對之間的分割符,":"鍵與值之間的分割符.
(6).特別注意: 字典序列化為字符串,key 必須是字符串類型,數字會變為字符串.
4.pickle 的用法
(1)dumps loads 用于網絡傳輸
import pickle
dic={"包寶寶":["包大寶寶","包小寶寶","包老寶寶","真的很好看"]}
ret=pickle.dumps(dic)
print(ret,type(ret)) # <class 'bytes'>
ret2=pickle.loads(ret)
print(ret2,type(ret2)) # {'包寶寶': ['包大寶寶', '包小寶寶', '包老寶寶', '真的很好看']} <class 'dict'>
(2)dump load 文件操作
單個數據寫入一個文件:
import pickle
dic={"包寶寶":["包大寶寶","包小寶寶","包老寶寶","真的很好看"]}
f=open("pickle",mode="wb")
pickle.dump(dic,f)
f.close()
f1=open("pickle",mode="rb")
ret=pickle.load(f1)
print(ret,type(ret)) #{'包寶寶': ['包大寶寶', '包小寶寶', '包老寶寶', '真的很好看']} <class 'dict'>
多個數據寫入一個文件:
import pickle
dic={"包寶寶":["包大寶寶","包小寶寶","包老寶寶","真的很好看"]}
dic1={'alex':["男",1000,"中國"]}
dic2 = {"alex1": ('women','women','老女人')}
f1=open("pickle1",mode="wb")
pickle.dump(dic,f1)
pickle.dump(dic1,f1)
pickle.dump(dic2,f1)
f1.close()
f2=open("pickle1",mode="rb")
# print(pickle.load(f2)) # {'包寶寶': ['包大寶寶', '包小寶寶', '包老寶寶', '真的很好看']}
# print(pickle.load(f2)) # {'alex': ['男', 1000, '中國']}
# print(pickle.load(f2)) # {'alex1': ('women', 'women', '老女人')}
while True:
try:
print(pickle.load(f2))
except EOFError:
break
5.shelve 的用法 與文件相關,只能在python中用.
給文件寫入一個鍵值對; 并輸出鍵值對的值
import shelve
f = shelve.open('shelve_file')
f['key'] = {'int':10, 'float':9.5, 'string':'Sample data'} #直接對文件句柄操作,就可以存入數據
f.close()
f1 = shelve.open('shelve_file')
existing=f1["key"] #{'int': 10, 'float': 9.5, 'string': 'Sample data'}
f1.close()
print(existing)
#給key的值(字典)添加一個鍵值對.
import shelve
f2 = shelve.open('shelve_file',writeback=True) # writeback允許給文件加值
f2['key']['new_value'] = 'this was not here before'
print(f2['key'])
f2.close()
轉載于:https://www.cnblogs.com/J-7-H-2-F-7/p/9321485.html
總結
以上是生活随笔為你收集整理的python全栈开发 * 24 知识点汇总 * 180705的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 懂球帝 X 七牛云:纯粹有趣的足球遇上简
- 下一篇: 如何安装Pycharm官方统计代码行插件