day21 pickle json shelve configpaser 模块
生活随笔
收集整理的這篇文章主要介紹了
day21 pickle json shelve configpaser 模块
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1. 序列化:我們在網絡傳輸的時候,需要我們對對象進行處理,把對象處理成方便存儲和傳輸的格式,這個過程就叫序列化
序列化的方法不一定一樣,三十目的都是為了方便儲存和傳輸.
在python中有三種序列化方案:
1. pickle 可以將我們python中任意數據類型轉化為bytes寫入文件中,同樣也可以把文件中寫好的bytes
轉換回我們的python數據,這個過程成為反序列化.
2.shelve 簡單另類的一種序列化方案,有點類似后面會學的redis,可以做為一種小型數據庫使用
3.json 將python常見的字典,列表轉化成字符串.是目前前后端交互使用頻率最高的一種的一種數據格式, 2. pickle
把python對象寫入文件中的一種方法,寫入的格式是bytes類型,所以pickle的結果是給機器識別而不
是給人看的.
例: import pickle
class Cat:
def __init__(self,name,color):
self.name=name
self.color=color
def chi(self):
print("%s吃老鼠"%self.name) c=Cat("波斯","綠色")
c.chi() #造了一個對象,執行chi()這個動作
bs=pickle.dumps(c) #序列化一個對象,把對象轉化成bytes類型
print(bs) #查看效果 是一堆二進制東西,看不懂
cc=pickle.loads(bs) #反序列化
print(cc) #還是原來那只貓
cc.chi() #也能執行chi()這個動作
print(cc.name) #也能查看他的屬性
print(cc.color)
#總的來說:pickle中的dumps可以序列化一個對象. loads可以反序列化一個對象.
------------------------------------------------------------
#那怎么把序列化之后的數據寫入到文件當中呢? c1=Cat("英短","藍白") #造一直英短藍白的貓
pickle.dump(c1,open("cat.db",mode="wb")) #把一個對象寫入文件cat.db
c111=pickle.load(open("cat.db",mode="rb")) #從文件中把一個對象從cat.db文件中讀取出來
c111.chi() #解讀出來的還是能執行chi()
print(c111.color) #也可查看其屬性
print(c111.name) ---------------------------------------------------------------
#那怎么把多個文件序列化后寫入文件當中呢? c1=Cat("英短1","藍白") #造出多個對象,很多只貓
c2=Cat("英短2","藍白")
c3=Cat("英短3","藍白")
c4=Cat("英短4","藍白")
c5=Cat("英短5","藍白")
lst=[c1,c2,c3,c4,c5] #為了方便,把貓裝進列表里面
f=open("cats.db",mode="wb") #打開(創建)一個cats.db文件
pickle.dump(lst,f) #把整個列表寫入文件中
f.close() #關閉文件
f1=open("cats.db",mode="rb") #打開cats.db文件
lis=pickle.load(f1) #把讀取出來的列表賦值給新的列表
for i in lis: #把列表的元素一個一個拿出來
i.chi()
f1.close() #關閉文件 ----------------------------------------------------------------------- 注意
1.單單序列化都是不帶s的,而序列化后寫入文件是要帶s的
2.在文件中讀寫是是wb,rb模式,所以在打開文件的時候不需要設置encoding
3.pickle序列化的內容是?進制的內容(bytes) 不是給人看的
例.1 import shelve
--------------------------------------------------------------------
d=shelve.open("漂亮") #文件型字典
d["wf"]="汪峰" # 創建字典,往里面寫東西
d["小三"]="汪峰老婆"
d.close()
d=shelve.open("漂亮")
print(d["wf"]) #對里面的內容進行查看,可以看到上面寫的內容
print(d["小三"])
d.close()
---------------------------------------------------------------------- d=shelve.open("漂亮") #當"key"存在的時候就是對他"value"值進行修改
d["小三"]="國際章" #對里面已經存在的進行修改
d.close()
d=shelve.open("漂亮")
print(d["小三"]) #修改完成后看我們的修改是否成功
d.close() #修改成功
-------------------------------------------------------------------
#那對于多層嵌套的字典操作是不是也是這樣呢? d=shelve.open("多層嵌套的字典") #字典不存在就創建
d["wf"]={"name":"汪峰 ","wf":{"name":"國際章","hobby":"換男人"} }
d.close()
d=shelve.open("多層嵌套的字典") #對多層嵌套字典進行查看
print(d["wf"])
d.close() d=shelve.open("多層嵌套的字典")
d["wf"]["wf"]["name"]="小三" #對多層嵌套的字典比較里面的內容進行修改
d.close()
d=shelve.open("多層嵌套的字典") #再次查看多層嵌套字典,查看修改是否成功
print(d["wf"]["wf"]["name"]) #發現還是原來的名字-->國際章,并沒有修改
d.close() #原因是只是把讀出來在內存上的內容修改了,并沒有返寫到硬盤上面 #解決方法 writeback=True d=shelve.open("多層嵌套的字典",writeback=True)
d["wf"]["wf"]["name"]="小三" #對多層嵌套的字典進行修改
d.close()
d=shelve.open("多層嵌套的字典")
print(d["wf"]["wf"]["name"]) #再看一下,修改成功了
d.close() -----------------------------------------------------------------------------
注:對于多層嵌套的字典叫底層的東西進行修改只是在讀取出來的內存中修改,并沒有修改硬盤上面的內容,所以對里層的內容修改的時候要記得
把返寫 writeback=True寫進去
writeback=True可以動態的把我們修改的信息寫入到文件中. 而且這個鬼東西還可以刪
除數據. 就像字典一樣. 上一波操作
s = shelve.open("sylar", writeback=True)
del s['jay'] #刪除一個對象,記得返寫
s.close()
s = shelve.open("sylar")
print(s['jay']) # 報錯了, 沒有了
s.close()
s = shelve.open("sylar", writeback=True)
s['jay'] = "周杰倫"
s['wlj'] = "王力宏"
s.close()
s = shelve.open("sylar")
for k in s: # 像字典一樣遍歷
print(k)
print(s.keys()) # 拿到所有key的集合
for k in s.keys():
print(k) for k, v in s.items(): # 像字典一樣操作
print(k, v)
s.close()
為什么這樣呢? 因為json的語法格式可以完美的表示出一個對象
那什么是json: json全稱javascript object notation. 翻譯過來叫js對象簡譜.
json的用法:
前端是在JS那邊來解析json的. 所以, 我們需要把我們程序產生的字典
轉化成json格式的json串(字符串). 然后網絡絡傳輸. 那邊接收到了之后.
它愛怎么處理是它的事情,那如何把字典轉化成我們的json格式的字符串?
例.1
import json
#在python中可以把字典和列表直接轉化為jason
dic={"a":"小蘿莉","b":"大媽","c":"十八水","d":"管式服務","e":False,"f":None} #創建字典
s=json.dumps(dic,ensure_ascii=False) #把字典轉化為json串 處理中文的時候就得把默認的ascii碼關掉
print(s) #{"a": "小蘿莉", "b": "大媽", "c": "十八水", "d": "管式服務", "e": false, "f": null}
print(type(s)) #<class 'str'>
a='{"a": "小蘿莉", "b": "大媽", "c": "十八水", "d": "管式服務", "e": false, "f": null}' #json串
b=json.loads(a) #把json串轉化為字典
print(b) #{'a': '小蘿莉', 'b': '大媽', 'c': '十八水', 'd': '管式服務', 'e': False, 'f': None}
print(type(b)) #<class 'dict'>
--------------------------------------------------------------------------------------------------
那json可以像pickle那樣把json串寫入文件嗎?哪是肯定的
#把json寫入文件 dic={"a":"小蘿莉","b":"大媽","c":"十八水","d":"管式服務","e":False,"f":None,"wf":{"name":"汪峰","hobby":"皮褲"}}
f=open("json文件",mode="w",encoding="utf-8") #把對象打散成json寫入文件中
json.dump(dic,f,ensure_ascii=False,indent=4) #indent=縮進,4個縮進為一個空格 把ascii碼默認為false
f=open("json文件",mode="r",encoding="utf-8")
d=json.load(f) #對寫入文件的內容進行讀取
print(d) #dump load和pickle的用法一樣,帶s是不寫入文件的,寫入文件的不帶s
json串是字符串,時予以這邊的文件打開的編碼格式要設置為encoding="utf-8"
-------------------------------------------------------------------------
這邊要注意的是:我們可以向同一個文件中寫入多個json串. 但是讀不行
import json
lst = [{"a": 1}, {"b": 2},
f = open("test.json", mode="utf-8" for el in lst:
json.dump(el, f)
f.close()
完成后的結果是:{"a": 1}{"b": 2}{"c": 3} 這是一行內容,是無法正常讀取的
那如何解決呢?方案一. 把所有的內容準備好統一進行寫入和讀取,這樣處理,數據量小還好
數據量多的話就不夠友好了,
方案二
不用dump. 改用dumps和loads. 對每一條數據分別進行處理.
例:
import json
lst = [{"a": 1}, {"b": 2}, {"c": 3}]
# 寫入
f = open("test.json", mode="w", encoding="utf-8")
for el in lst:
s = json.dumps(el, ensure_ascii=True) + "\n"
f.write(s)
f.close()
# 讀取
f = open("test.json", mode="r", encoding="utf-8")
for line in f:
dic = json.loads(line.strip())
print(dic)
f.close()
--------------------------------------------------------------------------------------------
那可以把自定義對象轉化為json串再寫入文件嗎?可以的,就是步驟麻煩了一點
class Person: #新建一個類
def __init__(self,firstname,lastname):
self.firstname=firstname
self.lastname=lastname
p=Person("日天","一輩子") #用類創建一個對象
----------------------------------------------------------------------------------------- #方案一: # s=json.dumps(p.__dict__,ensure_ascii=False) #直接轉化會報錯,沒辦法動態轉化
# print(s) #直接用字典形式獲取里面所有的信息在進行轉化 轉的是字典 -------------------------------------------------------------------------------------------
#方案二
def func(obj):
return {
"firstname":obj.firstname,
"lastname":obj.lastname
}
s=json.dumps(p,default=func,ensure_ascii=False)
print(s)
#怎么把json還原為對象 def func(dic):
return Person(dic["firstname"],dic["lastname"])
s='{"firstname": "日天", "lastname": "一輩子"}' #json格式的
p=json.loads(s,object_hook=func)
print(p.firstname,p.lastname)
-------------------------------------------------------------------
例.
import configparser
config = configparser.ConfigParser()
config['DEFAULT'] = {
"sleep": 1000,
"session-time-out": 30,
"user-alive": 999999
}
config['TEST-DB'] = {
"db_ip": "192.168.17.189",
"port": "3306",
"u_name": "root",
"u_pwd": "123456"
}
config['168-DB'] = {
"db_ip": "152.163.18.168",
"port": "3306",
"u_name": "root",
"u_pwd": "123456"
}
config['173-DB'] = {
"db_ip": "152.163.18.173",
"port": "3306",
"u_name": "root",
"u_pwd": "123456"
}
f = open("db.ini", mode="w")
config.write(f) # 寫??件
f.flush()
f.close()
#讀取文件
config = configparser.ConfigParser()
config.read("db.ini") # 讀取?件
print(config.sections()) # 獲取到section. 章節...DEFAULT是給每個章節都配備的信
print(config.get("DEFAULT", "SESSION-TIME-OUT")) # 從xxx章節中讀取到xxx信息
# 也可以像字典?樣操作
print(config["TEST-DB"]['DB_IP'])
print(config["173-DB"]["db_ip"])
for k in config['168-DB']:
print(k)
for k, v in config["168-DB"].items():
print(k, v)
print(config.options('168-DB')) # 同for循環,找到'168-DB'下所有鍵
print(config.items('168-DB')) #找到'168-DB'下所有鍵值對
print(config.get('168-DB','db_ip')) # 152.163.18.168 get?法Section下的
key對應的value
# 先讀取. 然后修改. 最后寫回?件
config = configparser.ConfigParser()
config.read("db.ini") # 讀取?件
# 添加?個章節
# config.add_section("189-DB")
# config["189-DB"] = {
# "db_ip": "167.76.22.189",
# "port": "3306",
# "u_name": "root",
# "u_pwd": "123456"
# }
# 修改信息
config.set("168-DB", "db_ip", "10.10.10.
# 刪除章節
config.remove_section("173-DB")
# 刪除元素信息
config.remove_option("168-DB", "u_name")
# 寫回?件
config.write(open("db.ini", mode="w"))
序列化的方法不一定一樣,三十目的都是為了方便儲存和傳輸.
在python中有三種序列化方案:
1. pickle 可以將我們python中任意數據類型轉化為bytes寫入文件中,同樣也可以把文件中寫好的bytes
轉換回我們的python數據,這個過程成為反序列化.
2.shelve 簡單另類的一種序列化方案,有點類似后面會學的redis,可以做為一種小型數據庫使用
3.json 將python常見的字典,列表轉化成字符串.是目前前后端交互使用頻率最高的一種的一種數據格式, 2. pickle
把python對象寫入文件中的一種方法,寫入的格式是bytes類型,所以pickle的結果是給機器識別而不
是給人看的.
例: import pickle
class Cat:
def __init__(self,name,color):
self.name=name
self.color=color
def chi(self):
print("%s吃老鼠"%self.name) c=Cat("波斯","綠色")
c.chi() #造了一個對象,執行chi()這個動作
bs=pickle.dumps(c) #序列化一個對象,把對象轉化成bytes類型
print(bs) #查看效果 是一堆二進制東西,看不懂
cc=pickle.loads(bs) #反序列化
print(cc) #還是原來那只貓
cc.chi() #也能執行chi()這個動作
print(cc.name) #也能查看他的屬性
print(cc.color)
#總的來說:pickle中的dumps可以序列化一個對象. loads可以反序列化一個對象.
------------------------------------------------------------
#那怎么把序列化之后的數據寫入到文件當中呢? c1=Cat("英短","藍白") #造一直英短藍白的貓
pickle.dump(c1,open("cat.db",mode="wb")) #把一個對象寫入文件cat.db
c111=pickle.load(open("cat.db",mode="rb")) #從文件中把一個對象從cat.db文件中讀取出來
c111.chi() #解讀出來的還是能執行chi()
print(c111.color) #也可查看其屬性
print(c111.name) ---------------------------------------------------------------
#那怎么把多個文件序列化后寫入文件當中呢? c1=Cat("英短1","藍白") #造出多個對象,很多只貓
c2=Cat("英短2","藍白")
c3=Cat("英短3","藍白")
c4=Cat("英短4","藍白")
c5=Cat("英短5","藍白")
lst=[c1,c2,c3,c4,c5] #為了方便,把貓裝進列表里面
f=open("cats.db",mode="wb") #打開(創建)一個cats.db文件
pickle.dump(lst,f) #把整個列表寫入文件中
f.close() #關閉文件
f1=open("cats.db",mode="rb") #打開cats.db文件
lis=pickle.load(f1) #把讀取出來的列表賦值給新的列表
for i in lis: #把列表的元素一個一個拿出來
i.chi()
f1.close() #關閉文件 ----------------------------------------------------------------------- 注意
1.單單序列化都是不帶s的,而序列化后寫入文件是要帶s的
2.在文件中讀寫是是wb,rb模式,所以在打開文件的時候不需要設置encoding
3.pickle序列化的內容是?進制的內容(bytes) 不是給人看的
?
例.2 import pickle class User:def __init__(self,username,password):self.username=usernameself.password=password class Client:def register(self):usn=input("請輸入你的用戶名") #注冊程序psw=input("請輸入你的密碼")u=User(usn,psw) #用注冊的信息造出一個對象pickle.dump(u,open("userinfo",mode="ab")) #把對象寫入到userin文件當中, 模式是abprint("注冊成功")def login(self):usern=input("請輸入你的用戶名") #登錄程序psword=input("請輸入你的密碼")f=open("userinfo",mode="rb") while 1: #把用戶輸入的和userinfo的信息進行一一比對try:u=pickle.load(f)if u.username==usern and u.password==psword:print("登錄成功")breakexcept Exception as e: #當userifo里面的信息比對完了,就報錯print("登錄失敗")break c=Client() c.register() c.register() c.register()c.register() c.login()?
3. shelve 提供持久化操作,想歪了沒有?其實是把數據寫到硬盤上面,而且shelve的操作很像字典,你可以把他認為是字典例.1 import shelve
--------------------------------------------------------------------
d=shelve.open("漂亮") #文件型字典
d["wf"]="汪峰" # 創建字典,往里面寫東西
d["小三"]="汪峰老婆"
d.close()
d=shelve.open("漂亮")
print(d["wf"]) #對里面的內容進行查看,可以看到上面寫的內容
print(d["小三"])
d.close()
---------------------------------------------------------------------- d=shelve.open("漂亮") #當"key"存在的時候就是對他"value"值進行修改
d["小三"]="國際章" #對里面已經存在的進行修改
d.close()
d=shelve.open("漂亮")
print(d["小三"]) #修改完成后看我們的修改是否成功
d.close() #修改成功
-------------------------------------------------------------------
#那對于多層嵌套的字典操作是不是也是這樣呢? d=shelve.open("多層嵌套的字典") #字典不存在就創建
d["wf"]={"name":"汪峰 ","wf":{"name":"國際章","hobby":"換男人"} }
d.close()
d=shelve.open("多層嵌套的字典") #對多層嵌套字典進行查看
print(d["wf"])
d.close() d=shelve.open("多層嵌套的字典")
d["wf"]["wf"]["name"]="小三" #對多層嵌套的字典比較里面的內容進行修改
d.close()
d=shelve.open("多層嵌套的字典") #再次查看多層嵌套字典,查看修改是否成功
print(d["wf"]["wf"]["name"]) #發現還是原來的名字-->國際章,并沒有修改
d.close() #原因是只是把讀出來在內存上的內容修改了,并沒有返寫到硬盤上面 #解決方法 writeback=True d=shelve.open("多層嵌套的字典",writeback=True)
d["wf"]["wf"]["name"]="小三" #對多層嵌套的字典進行修改
d.close()
d=shelve.open("多層嵌套的字典")
print(d["wf"]["wf"]["name"]) #再看一下,修改成功了
d.close() -----------------------------------------------------------------------------
注:對于多層嵌套的字典叫底層的東西進行修改只是在讀取出來的內存中修改,并沒有修改硬盤上面的內容,所以對里層的內容修改的時候要記得
把返寫 writeback=True寫進去
writeback=True可以動態的把我們修改的信息寫入到文件中. 而且這個鬼東西還可以刪
除數據. 就像字典一樣. 上一波操作
s = shelve.open("sylar", writeback=True)
del s['jay'] #刪除一個對象,記得返寫
s.close()
s = shelve.open("sylar")
print(s['jay']) # 報錯了, 沒有了
s.close()
s = shelve.open("sylar", writeback=True)
s['jay'] = "周杰倫"
s['wlj'] = "王力宏"
s.close()
s = shelve.open("sylar")
for k in s: # 像字典一樣遍歷
print(k)
print(s.keys()) # 拿到所有key的集合
for k in s.keys():
print(k) for k, v in s.items(): # 像字典一樣操作
print(k, v)
s.close()
?
4. jsonjson是我們前后端交互的樞紐. 相當于編程界的普通話. 大家溝通都用json.為什么這樣呢? 因為json的語法格式可以完美的表示出一個對象
那什么是json: json全稱javascript object notation. 翻譯過來叫js對象簡譜.
json的用法:
前端是在JS那邊來解析json的. 所以, 我們需要把我們程序產生的字典
轉化成json格式的json串(字符串). 然后網絡絡傳輸. 那邊接收到了之后.
它愛怎么處理是它的事情,那如何把字典轉化成我們的json格式的字符串?
例.1
import json
#在python中可以把字典和列表直接轉化為jason
dic={"a":"小蘿莉","b":"大媽","c":"十八水","d":"管式服務","e":False,"f":None} #創建字典
s=json.dumps(dic,ensure_ascii=False) #把字典轉化為json串 處理中文的時候就得把默認的ascii碼關掉
print(s) #{"a": "小蘿莉", "b": "大媽", "c": "十八水", "d": "管式服務", "e": false, "f": null}
print(type(s)) #<class 'str'>
a='{"a": "小蘿莉", "b": "大媽", "c": "十八水", "d": "管式服務", "e": false, "f": null}' #json串
b=json.loads(a) #把json串轉化為字典
print(b) #{'a': '小蘿莉', 'b': '大媽', 'c': '十八水', 'd': '管式服務', 'e': False, 'f': None}
print(type(b)) #<class 'dict'>
--------------------------------------------------------------------------------------------------
那json可以像pickle那樣把json串寫入文件嗎?哪是肯定的
#把json寫入文件 dic={"a":"小蘿莉","b":"大媽","c":"十八水","d":"管式服務","e":False,"f":None,"wf":{"name":"汪峰","hobby":"皮褲"}}
f=open("json文件",mode="w",encoding="utf-8") #把對象打散成json寫入文件中
json.dump(dic,f,ensure_ascii=False,indent=4) #indent=縮進,4個縮進為一個空格 把ascii碼默認為false
f=open("json文件",mode="r",encoding="utf-8")
d=json.load(f) #對寫入文件的內容進行讀取
print(d) #dump load和pickle的用法一樣,帶s是不寫入文件的,寫入文件的不帶s
json串是字符串,時予以這邊的文件打開的編碼格式要設置為encoding="utf-8"
-------------------------------------------------------------------------
這邊要注意的是:我們可以向同一個文件中寫入多個json串. 但是讀不行
import json
lst = [{"a": 1}, {"b": 2},
f = open("test.json", mode="utf-8" for el in lst:
json.dump(el, f)
f.close()
完成后的結果是:{"a": 1}{"b": 2}{"c": 3} 這是一行內容,是無法正常讀取的
那如何解決呢?方案一. 把所有的內容準備好統一進行寫入和讀取,這樣處理,數據量小還好
數據量多的話就不夠友好了,
方案二
不用dump. 改用dumps和loads. 對每一條數據分別進行處理.
例:
import json
lst = [{"a": 1}, {"b": 2}, {"c": 3}]
# 寫入
f = open("test.json", mode="w", encoding="utf-8")
for el in lst:
s = json.dumps(el, ensure_ascii=True) + "\n"
f.write(s)
f.close()
# 讀取
f = open("test.json", mode="r", encoding="utf-8")
for line in f:
dic = json.loads(line.strip())
print(dic)
f.close()
--------------------------------------------------------------------------------------------
那可以把自定義對象轉化為json串再寫入文件嗎?可以的,就是步驟麻煩了一點
class Person: #新建一個類
def __init__(self,firstname,lastname):
self.firstname=firstname
self.lastname=lastname
p=Person("日天","一輩子") #用類創建一個對象
----------------------------------------------------------------------------------------- #方案一: # s=json.dumps(p.__dict__,ensure_ascii=False) #直接轉化會報錯,沒辦法動態轉化
# print(s) #直接用字典形式獲取里面所有的信息在進行轉化 轉的是字典 -------------------------------------------------------------------------------------------
#方案二
def func(obj):
return {
"firstname":obj.firstname,
"lastname":obj.lastname
}
s=json.dumps(p,default=func,ensure_ascii=False)
print(s)
#怎么把json還原為對象 def func(dic):
return Person(dic["firstname"],dic["lastname"])
s='{"firstname": "日天", "lastname": "一輩子"}' #json格式的
p=json.loads(s,object_hook=func)
print(p.firstname,p.lastname)
-------------------------------------------------------------------
?
5. configpatser模塊該模塊適用于配置文件的格式與windows ini文件類似,可以包含一個或多個節(section)每個節可以有多個參數(鍵=值).例.
import configparser
config = configparser.ConfigParser()
config['DEFAULT'] = {
"sleep": 1000,
"session-time-out": 30,
"user-alive": 999999
}
config['TEST-DB'] = {
"db_ip": "192.168.17.189",
"port": "3306",
"u_name": "root",
"u_pwd": "123456"
}
config['168-DB'] = {
"db_ip": "152.163.18.168",
"port": "3306",
"u_name": "root",
"u_pwd": "123456"
}
config['173-DB'] = {
"db_ip": "152.163.18.173",
"port": "3306",
"u_name": "root",
"u_pwd": "123456"
}
f = open("db.ini", mode="w")
config.write(f) # 寫??件
f.flush()
f.close()
#讀取文件
config = configparser.ConfigParser()
config.read("db.ini") # 讀取?件
print(config.sections()) # 獲取到section. 章節...DEFAULT是給每個章節都配備的信
print(config.get("DEFAULT", "SESSION-TIME-OUT")) # 從xxx章節中讀取到xxx信息
# 也可以像字典?樣操作
print(config["TEST-DB"]['DB_IP'])
print(config["173-DB"]["db_ip"])
for k in config['168-DB']:
print(k)
for k, v in config["168-DB"].items():
print(k, v)
print(config.options('168-DB')) # 同for循環,找到'168-DB'下所有鍵
print(config.items('168-DB')) #找到'168-DB'下所有鍵值對
print(config.get('168-DB','db_ip')) # 152.163.18.168 get?法Section下的
key對應的value
# 先讀取. 然后修改. 最后寫回?件
config = configparser.ConfigParser()
config.read("db.ini") # 讀取?件
# 添加?個章節
# config.add_section("189-DB")
# config["189-DB"] = {
# "db_ip": "167.76.22.189",
# "port": "3306",
# "u_name": "root",
# "u_pwd": "123456"
# }
# 修改信息
config.set("168-DB", "db_ip", "10.10.10.
# 刪除章節
config.remove_section("173-DB")
# 刪除元素信息
config.remove_option("168-DB", "u_name")
# 寫回?件
config.write(open("db.ini", mode="w"))
?
轉載于:https://www.cnblogs.com/tjp40922/p/9964724.html
總結
以上是生活随笔為你收集整理的day21 pickle json shelve configpaser 模块的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: C#线程 ---- 线程同步详解
- 下一篇: Mongo 查询(可视化工具)