Python中的檔案的讀寫操作

回憶不說話發表於2018-07-30

一、csv檔案

CSV是以逗號間隔的文字檔案,XLS是電子表格,包含文字、數值、公式和格式。當不需要公式和格式表格可用CSV格式儲存。

引入

import csv

寫入:
rows = [['張三',10],['李四',22],['王五',18]]

with open('test1.csv','w',newline='')as csv_file:

    writer = csv.writer(csv_file)

    for row in rows:

        writer.writerow(row)

csv是一行一行寫入的。

如何解決csv檔案的亂碼問題。

先將CSV用txt記事本開啟,然後選擇ANSI編碼方式。另存為,點編碼這裡,這裡的編碼有這麼幾種選擇ANSI/Unicode/Unicode big endian/UTF-8 2. 選擇ANSI,然後儲存,再用Excel開啟,就不會有亂碼了。

讀取:

用f檔案讀取的話,格式是這樣的:

with open('test.txt','r')as f:

用csv檔案讀取,可以和讀取檔案作比較:

with open('test1.csv','r')as read_file:

    reader = csv.reader(read_file)

    print(reader)

    print([row for row in rows])

字典寫入:

data_dic = [
    {
        'name':'zhangsan',
        'age':'15'
    },{
        'name':'lisi',
        'age':'25'
    }
]

with open('dict.csv','w',newline='')as csv_file:

    keys = []

    for key in data_dic[0].keys():
        print(key)
        keys.append(key)
    writer = csv.DictWriter(csv_file,fieldnames=keys)
    writer.writeheader()
    for dict in data_dic:
        writer.writerow(dict)

讀取

with open('test2.csv','r')as csv_file:
    reader = csv.DictReader(csv_file)
    print([row for row in reader])

輸出結果為:

[OrderedDict([('張三', '李四'), ('10', '22')]), OrderedDict([('張三', '王五'), ('10', '18')])]

二、json檔案的寫入。

引入:

import json
info = [
    {
        'name':'張三',
        'age':14,
        'fond':'play'
    }
]
with open('info.txt','w')as f:
    # indent 縮排字元個數
    # ensure_ascii =False 將unicode字元轉換成中文
    f.write(json.dumps(info,indent=2,ensure_ascii=False))

寫入的結果:

 

錯誤資訊:“json.decoder.JSONDecodeError: Expecting property name enclosed in double quotes: line 1 column 2 (char 1)”

用單引號包裹字串導致的,改為雙引號即可。

三、常用的開啟方式:

r:以只讀方式開啟檔案

rb:以二進位制方式開啟檔案

r+:以讀寫方式開啟檔案

rb+:以二進位制讀寫方式開啟檔案

w:以寫入方式開啟檔案,如果檔案存在,則將其覆蓋。若不存在,則建立。

wb:以二進位制寫入方式開啟檔案,如果檔案存在,則將其覆蓋。若不存在,則建立。

w+:以讀寫方式開啟檔案,如果檔案存在,則將其覆蓋。若不存在,則建立。

a:以追加方式開啟檔案,如果檔案存在,從檔案結尾開始寫入,如果不存在,則建立新檔案來寫入。

a+:以讀寫方式開啟檔案,如果檔案存在,從檔案結尾開始寫入,如果不存在,則建立新檔案來寫入。

 

 

 

 

 

 

相關文章