新聞中心
python3 對象 |字典|json|yaml|字符串 相互轉(zhuǎn)化
在研究 k8s 的yaml 配置文件的時候,我總擔(dān)心自己一不小心 會寫錯,所以我向往 使用將對象 序列化 yaml 的形式,
公司主營業(yè)務(wù):成都網(wǎng)站制作、網(wǎng)站設(shè)計、移動網(wǎng)站開發(fā)等業(yè)務(wù)。幫助企業(yè)客戶真正實現(xiàn)互聯(lián)網(wǎng)宣傳,提高企業(yè)的競爭能力。創(chuàng)新互聯(lián)建站是一支青春激揚、勤奮敬業(yè)、活力青春激揚、勤奮敬業(yè)、活力澎湃、和諧高效的團隊。公司秉承以“開放、自由、嚴謹、自律”為核心的企業(yè)文化,感謝他們對我們的高要求,感謝他們從不同領(lǐng)域給我們帶來的挑戰(zhàn),讓我們激情的團隊有機會用頭腦與智慧不斷的給客戶帶來驚喜。創(chuàng)新互聯(lián)建站推出七星關(guān)區(qū)免費做網(wǎng)站回饋大家。
其實 python object 可以 直接 轉(zhuǎn) yaml ,甚至也可以 直接 轉(zhuǎn)成yaml文件?。?!
這里 會經(jīng)常用到幾個 函數(shù) vars() ast.
我們先嘗試用最笨的方法 實現(xiàn) object到y(tǒng)aml 的轉(zhuǎn)化
在python對象 convert to dict 的形式,使用 vars()函數(shù)
然后 dict convert to json 使用 json.dumps(dict)函數(shù)
然后 json converte to yaml 使用 ya= yaml.load(json.dumps(dict)) 然后
再 yaml.safe_dump(ya,default_flow_style=False)
至此我們看到 從 python Object --- dict ---- json --- yaml 的轉(zhuǎn)化
其中 obj dict json yaml 轉(zhuǎn) string ,只要 str()函數(shù)即可,或者 str(vars())結(jié)合
yaml 格式 寫入到文件 ,需要注意的是, open()函數(shù) 的mode 一定要是 'w' ,不能是’wb', b代表是二進制寫入
yaml 寫入的是dict str,使用 ‘wb' 會報錯,[yaml TypeError: a bytes-like object is required, not 'str']
【出現(xiàn)該錯誤往往是通過open()函數(shù)打開文本文件時,使用了‘rb’屬性,如:fileHandle=open(filename,'rb'),則此時是通過二進制方式打開文件的,所以在后面處理時如果使用了str()函數(shù),就會出現(xiàn)該錯誤,該錯誤不會再python2中出現(xiàn)。
具體解決方法有以下兩種:
第一種,在open()函數(shù)中使用‘r’屬性,即文本方式讀取,而不是‘rb’,以二進制文件方式讀取,可以直接解決問題。
第二種,在open()函數(shù)中使用‘rb’,可以在使用之前進行轉(zhuǎn)換,有以下實例,來自: 】
其實 python object 可以 直接 轉(zhuǎn) yaml ,甚至也可以 直接 轉(zhuǎn)成yaml文件?。。?/p>
比如我已經(jīng)定義了一個 Dog python class,他有 好幾個屬性 并已經(jīng)賦值初始化了
另外生成 yaml 對象
生成yaml文件
結(jié)果是
反過來 yaml ---- json --- 持久化 json 文件 indent=1屬性是為了讓 json 不以單行展示,而是展開
注意的是 python 的 dict 和set 很相似 ,都是 { }, set 里是list, dict 是鍵值對
【# set object is not JSON serializable [duplicate]
】
打開 demo.json
yaml --- dict
yaml --- python object
json -- dict
json.loads()
dict-- json
json.jumps()
str --- dict
newdict=dict(str)
json -- python object
一個python object無法直接與json轉(zhuǎn)化,只能先將對象轉(zhuǎn)化成dictionary,再轉(zhuǎn)化成json;對json,也只能先轉(zhuǎn)換成dictionary,再轉(zhuǎn)化成object,通過實踐,源碼如下:
yaml -- python object
對yaml,也只能先轉(zhuǎn)換成json ---dictionary,再轉(zhuǎn)化成object,通過實踐,源碼如下:
dict -- -python object
python對象 默認都有一個 私有的屬性 dict 取值 就是 object的 字典形式, 賦值就就可以給對象屬性對應(yīng)賦值
例如json 轉(zhuǎn) 對象
對象 轉(zhuǎn) json
Python之dict(或?qū)ο?與json之間的互相轉(zhuǎn)化
在Python語言中,json數(shù)據(jù)與dict字典以及對象之間的轉(zhuǎn)化,是必不可少的操作。
dict字典轉(zhuǎn)json數(shù)據(jù)
對象轉(zhuǎn)json數(shù)據(jù)
json數(shù)據(jù)轉(zhuǎn)成dict字典
json數(shù)據(jù)轉(zhuǎn)成對象
json的load()與dump()方法的使用
dump()方法的使用
python讀取txt時被修改
有少量數(shù)據(jù)存在txt文件中,如何進行讀取、寫入和修改呢,今天小編就分享下:
python常用的讀取文件函數(shù)有三種read()、readline()、readlines()
1、read() : 一次性讀取所有文本
with open("1.txt", "r", encoding='utf-8') as f: #打開文本
data = f.read() #讀取文本
print(data)
2、readline() : 讀取行的內(nèi)容
with open('1.txt', 'r', encoding='utf-8') as f:
data = f.readline()
print(data)
3、readlines():讀取全部內(nèi)容,以數(shù)列的格式返回結(jié)果,可以配合for循環(huán)使用。
with open('1.txt', 'r', encoding='utf-8') as f:
data = f.readlines()
print(data)
image.png
with open('1.txt', 'r', encoding='utf-8') as f:
for i in f.readlines():
i = ann.strip('\n') #去除文本中的換行符
print(i)
4、with open()寫法與open()的區(qū)別
1666058828369926.png
image.png
open()完成后必須調(diào)用close()方法關(guān)閉文件,因為文件對象會占用操作系統(tǒng)的資源,并且操作系統(tǒng)同一時間能打開的文件
數(shù)量也是有限的,由于文件讀寫時都有可能產(chǎn)生IOError,一旦出錯,后面的f.close()就不會調(diào)用。with open()則可以避免這樣的情況。
5、python文件讀寫模式
r : 讀取文件,若文件不存在則會報錯
w: 寫入文件,若文件不存在則會先創(chuàng)建再寫入,會覆蓋原文件
a : 寫入文件,若文件不存在則會先創(chuàng)建再寫入,但不會覆蓋原文件,而是追加在文件末尾
r+ : 可讀、可寫,文件不存在也會報錯,寫操作時會覆蓋
w+ : 可讀,可寫,文件不存在先創(chuàng)建,會覆蓋
a+ : 可讀、可寫,文件不存在先創(chuàng)建,不會覆蓋,追加在末尾
rb:以二進制方式打開,只能讀取文件。如果文件不存在,會發(fā)生異常
wb:以二進制方式打開,只能寫入文件。如果文件不存在,創(chuàng)建該文件; 如果文件存在,會清空,在打開(覆蓋)
rt:以文本讀方式打開,只能讀文件。不存在報錯
wt:以文本寫方式打開,只能寫文件。 不存在創(chuàng)建;存在覆蓋
rb+:以二進制方式打開,可讀、寫文件。如果文件不存在,會發(fā)生異常
wb+:以二進制方式打開,可讀、寫文件。如果文件不存在,創(chuàng)建該文件;如果文件存在,會清空,在打開(覆蓋)
pythonword讀取為二進制
Python 怎么判斷一個文件是否是二進制文件呢
比如 我在網(wǎng)上抓一組文件,這組文件有圖片,有普通文本,有壓縮包,有 PDF 各種類型的文件
如果是圖片 或者 pdf 保存的話需要使用二進制方式保存:
open(fileName, "wb").write(content)
文本需要使用文本方式保存
open(fileName, "w").write(content)
有沒有什么 好的辦法去辨別這個文件是否是二進制文件呢
本文名稱:python中rb函數(shù) python rbac
鏈接URL:http://fisionsoft.com.cn/article/dogidce.html