在python編程中闸氮,蘋果macOS(linux鹦蠕、unix..)的系統(tǒng)默認(rèn)文件數(shù)據(jù)讀寫編碼是utf-8
,而windows系統(tǒng)默認(rèn)是gbk
士败。所以很多在mac中正常運(yùn)行的with open...
卻可能在mac下出錯(cuò)嵌纲。
下面是mac和win的幾個(gè)對(duì)比:
讀取所有文件列表
-
macOS
import os
files=os.listdir('/Users/zhyuzh/Desktop/Jupyter/tutor/jobui/')
-
windows
import os
files=os.listdir(r'C:\Users\zhyuzh\Desktop\Jupyter\tutor\jobui')
mac的路徑是正斜杠
/
,win的路徑是反斜杠\
,而字符串的反斜杠還有轉(zhuǎn)義的功能俘枫,比如\n
表示換行,所以必須開頭加r'...'
確保格式不變逮走,另外也要注意win下面的文件夾路徑不要以反斜杠結(jié)尾鸠蚪。
讀取文件數(shù)據(jù)
- macOS
with open('./jobui/12384.html','r') as f:
html=f.read()
-windows
with open('./jobui/12384.html','rb') as f:
html=f.read().decode('utf-8')
在windows下以byte形式讀取字節(jié),
rb
师溅,所以f.read()
得到的是字節(jié)形式的字符串茅信,等同于b開頭的字節(jié)bytestr=b'...'
,所以然后需要使用utf-8解碼.decode('utf-8')
险胰。
將數(shù)據(jù)寫入文件
-
macOS
with open('/jobui/12839.html', 'w') as f:
f.write(res.text)
-
windows
with open('/jobui/12839.html', 'w',encoding='utf-8') as f:
f.write(res.text)
macOS默認(rèn)就是utf-8編碼汹押,而windows則需要顯式的添加
encoding='utf-8'
參數(shù)。
最后起便,是json.dumps和json.loads兩個(gè)方法似乎并不受到編碼影響棚贾,待驗(yàn)證。
每個(gè)人的智能新時(shí)代
如果您發(fā)現(xiàn)文章錯(cuò)誤妙痹,請(qǐng)不吝留言指正;
如果您覺(jué)得有用鼻疮,請(qǐng)點(diǎn)喜歡怯伊;
如果您覺(jué)得很有用,歡迎轉(zhuǎn)載~
END