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