亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

python 寫入csv亂碼問題解決方法

 更新時(shí)間:2016年10月23日 09:42:19   投稿:lqh  
這篇文章主要介紹了python 寫入csv亂碼問題解決方法的相關(guān)資料,需要的朋友可以參考下

需求背景

最近為公司開發(fā)了一套郵件日?qǐng)?bào)程序,郵件一般就是表格,圖片,然后就是附件。附件一般都是默認(rèn)寫到txt文件里,但是PM希望郵件里的附件能直接用Excel這種軟件打開,最開始想保存為Excel,但是一想Excel的文件體積會(huì)多出好多倍,csv文件默認(rèn)也是使用Excel打開的,但是根本還是文本文件,體積小,保存也方便,于是最終決定使用csv模塊來保存文件。

Python寫csv文件

Python提供了內(nèi)置模塊讀寫csv文件,這里我只用到了寫,讀這里就不做介紹了,也不難,主要是解決亂碼問題。

def save2csv(file_name=None, header=None, data=None):
"""
保存成CSV格式文件,方便Excel直接打開
:param file_name: 保存的文件名
:param header: 表頭,每一列的名字
:param data: 具體填充數(shù)據(jù)
:return:
"""
if file_name is None or isinstance(file_name, basestring) is False:
raise Exception('保存CSV文件名不能為空,并且必須為字符串類型')
if file_name.endswith('.csv') is False:
file_name += '.csv'
file_obj = open(file_name, 'wb')
file_obj.write(codecs.BOM_UTF8) # 防止亂碼
writer = csv.writer(file_obj)
if data is None or isinstance(data, (tuple, list)) is False:
raise Exception('保存CSV文件失敗,數(shù)據(jù)為空或者不是數(shù)據(jù)類型')
if header is not None and isinstance(header, (tuple, list)) is True:
writer.writerow(header)
for row in data:
writer.writerow(row)

注意:有三句話就是為了防止亂碼的

file_obj = open(file_name, 'wb')
file_obj.write(codecs.BOM_UTF8) # 防止亂碼
writer = csv.writer(file_obj)

在文件頭部寫入codecs.BOM_UTF8就能防止亂碼了,文件都是utf-8編碼格式的

 感謝閱讀,希望能幫助到大家,謝謝大家對(duì)本站的支持!

相關(guān)文章

  • Python設(shè)計(jì)模式結(jié)構(gòu)型組合模式

    Python設(shè)計(jì)模式結(jié)構(gòu)型組合模式

    這篇文章主要介紹了Python設(shè)計(jì)模式結(jié)構(gòu)型組合模式,組合模式即Composite?Pattern,將對(duì)象組合成成樹形結(jié)構(gòu)以表示“部分-整體”的層次結(jié)構(gòu),組合模式使得用戶對(duì)單個(gè)對(duì)象和組合對(duì)象的使用具有一致性,下文具有一定的參考價(jià)值,需要的小伙伴可以參考一下
    2022-02-02
  • Python機(jī)器學(xué)習(xí)logistic回歸代碼解析

    Python機(jī)器學(xué)習(xí)logistic回歸代碼解析

    這篇文章主要介紹了Python機(jī)器學(xué)習(xí)logistic回歸代碼解析,具有一定借鑒價(jià)值,需要的朋友可以參考下
    2018-01-01
  • Python用scipy生成特殊矩陣

    Python用scipy生成特殊矩陣

    本文主要介紹了Pytho用scipy生成特殊矩陣詳解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們可以參考一下
    2023-04-04
  • django開發(fā)post接口簡單案例,獲取參數(shù)值的方法

    django開發(fā)post接口簡單案例,獲取參數(shù)值的方法

    今天小編就為大家分享一篇django開發(fā)post接口簡單案例,獲取參數(shù)值的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2018-12-12
  • 自定義實(shí)現(xiàn) PyQt5 下拉復(fù)選框 ComboCheckBox的完整代碼

    自定義實(shí)現(xiàn) PyQt5 下拉復(fù)選框 ComboCheckBox的完整代碼

    這篇文章主要介紹了自定義實(shí)現(xiàn) PyQt5 下拉復(fù)選框 ComboCheckBox的完整代碼,本文通過實(shí)例代碼講解的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-03-03
  • 基于python實(shí)現(xiàn)地址和經(jīng)緯度轉(zhuǎn)換

    基于python實(shí)現(xiàn)地址和經(jīng)緯度轉(zhuǎn)換

    這篇文章主要介紹了基于python實(shí)現(xiàn)地址和經(jīng)緯度轉(zhuǎn)換,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-05-05
  • Python從入門到精通之條件語句和循環(huán)結(jié)構(gòu)詳解

    Python從入門到精通之條件語句和循環(huán)結(jié)構(gòu)詳解

    Python中提供了強(qiáng)大而靈活的條件語句和循環(huán)結(jié)構(gòu),本文將從入門到精通地介紹它們的使用方法,并通過相關(guān)代碼進(jìn)行講解,希望對(duì)大家深入了解Python有一定的幫助
    2023-07-07
  • Python利用ORM控制MongoDB(MongoEngine)的步驟全紀(jì)錄

    Python利用ORM控制MongoDB(MongoEngine)的步驟全紀(jì)錄

    MongoEngine是一個(gè)對(duì)象文檔映射器(ODM),相當(dāng)于一個(gè)基于SQL的對(duì)象關(guān)系映射器(ORM),下面這篇文章主要給大家介紹了關(guān)于Python利用ORM控制MongoDB(MongoEngine)的相關(guān)資料,需要的朋友可以參考下
    2018-09-09
  • 關(guān)于Python下的Matlab函數(shù)對(duì)應(yīng)關(guān)系(Numpy)

    關(guān)于Python下的Matlab函數(shù)對(duì)應(yīng)關(guān)系(Numpy)

    這篇文章主要介紹了關(guān)于Python下的Matlab函數(shù)對(duì)應(yīng)關(guān)系(Numpy),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-07-07
  • Python 拷貝對(duì)象(深拷貝deepcopy與淺拷貝copy)

    Python 拷貝對(duì)象(深拷貝deepcopy與淺拷貝copy)

    Python中的對(duì)象之間賦值時(shí)是按引用傳遞的,如果需要拷貝對(duì)象,需要使用標(biāo)準(zhǔn)庫中的copy模塊。
    2008-09-09

最新評(píng)論