1. 程式人生 > >Python檔案讀寫注意編碼

Python檔案讀寫注意編碼

檔案的讀寫操作
1.python3中的預設的編碼解碼方式為utf-8
windows預設使用的編碼方式為gbk
當讀取一個windows檔案(gbk),可以指定讀取時使用的編碼encoding=('gbk')或者不需要指定
with open('a.txt','r','encoding=(gbk)') as f:這樣就能讀取出a.txt檔案的字串資料
當python寫入檔案時,預設使用的utf-8編碼,在win上開啟會亂碼,因為win預設編碼是gbk

2.wb w r rb a(追加寫)
with open('a.txt','w') as f:
f.write(xx)
當使用w寫入時,實際上把內容先進行了編碼.在wb寫入
with open('a.txt','wb') as f:
f.write(xx.encode())
因此在寫入二進位制時,使用wb,若是使用w 會對內容進行編碼,二進位制無法編碼,所以error
# 注:以下寫法會報錯,\U在python字串中有特殊含義,在讀取字串時會報錯
# 解決方法是對\轉義 C:\\U...
with open('C:\User\xxx\a.txt','r') as f:
pass
# # TODO 開啟一個檔案 open函式的預設引數encoding=None
# 以utf-8編碼開啟讀取一個檔案
# with open('a.txt','r',encoding='utf-8') as f:
# print(f.read())
# # 以gbk編碼讀取檔案
# with open('a.txt','r',encoding='gbk') as f:
# print(f.read())
#
# # 不指定encoding,預設按照系統的編碼(win是gbk)
# with open('a.txt','r',encoding='gbk') as f:
# print(f.read())

a = '哈哈哈哈哈哈哈哈哈嗝'


# 以w寫入時,實際上是先對a字串進行encode(),在wb寫入,
# 指定encodeing=utf-8 a.txt的編碼為utf-8
# with open('a.txt','w',encoding='utf-8') as f:
# f.write(a)
# TODO 指定寫成gbk編碼的txt檔案
# with open('a.txt','w',encoding='gbk') as f:
# f.write(a)
# 不指定寫的編碼,按照系統的預設編碼(win是gbk)
# with open('a.txt','w',) as f:
# f.write(a)