python學習筆記——讀寫csv文件

講的比較詳細的一篇文章。推薦,本文山寨於他。

點擊打開鏈接


python中有一個讀寫csv文件的包,直接import csv即可。利用這個python包可以很方便對csv文件進行操作

CSV的操作就是對列表的操作。

1.導入模塊

import csv

2.寫入數據

寫入並生成csv文件

寫文件時會把列表中的元素寫入到csv文件中。

#python對csv讀寫練習範例代碼

import csv

#—————寫入csv
#文件頭,一般就是數據名
fileheader = ["name","score"]
#假設要寫入的兩行數據
d1 = ["wang","100"]
d2 = ["li","80"]
#寫入數據
csv_file = open('csv_test03.csv','w')
writer = csv.writer(csv_file)
#寫入的內容都是以列表的形式傳入函數
# writer.writerow(fileheader) #逐行寫入
# writer.writerow(d1)
# writer.writerow(d2)
writer.writerows([fileheader,d1,d2])  #一次寫入多行的函數writerows()
csv_file.close()

name score  
     
wang 100  
     
li 80  
     

追加寫入:

import csv

#需要添加的數據行
add_info = ['hoho','50']
#以添加的形式寫入文件,設定關鍵字“a”,表示追加
csv_file = open('csv_test03.csv','a')
#新建對象writer
writer = csv.writer(csv_file)
#寫入數據
writer.writerow(add_info)
csv_file.close()

name score
   
wang 100
   
li 80
   
hoho 50
   
hoho 50
   

以字典形式寫入DictWriter

import csv
csvFile = open("instance.csv", "w")
# 文件頭以列表的形式傳入函數,列表的每個元素表示每一列的標識
fileheader = ["name", "score"]
dict_writer = csv.DictWriter(csvFile, fileheader)
# 但是如果此時直接寫入內容,會導致沒有數據名,所以,應先寫數據名(也就是我們上面定義的文件頭)。
# 寫數據名,可以自己寫如下代碼完成:
dict_writer.writeheader()
# 之後,按照(屬性:數據)的形式,將字典寫入CSV文檔即可
dict_writer.writerow({"name": "Li", "score": "80"})
csvFile.close()

寫入數據時有空行的解決辦法:(使用python3)

改寫的代碼如下,就能正常寫入了 

writefile = open('result.csv','w',newline =‘’)
writer = csv.writer(writefile)


3.讀取數據

1 / DictReader讀取

import csv

csv_file = open('csv_test03.csv','r')
dict_reader = csv.DictReader(csv_file)
for row in dict_reader:
    print(row)
輸出的結果是這樣的

OrderedDict([('name', 'wang'), ('score', '100')])
OrderedDict([('name', 'li'), ('score', '80')])
OrderedDict([('name', 'hoho'), ('score', '50')])
OrderedDict([('name', 'hoho'), ('score', '50')])

用DictReader輸出文件頭:

import csv

csv_file = open('csv_test03.csv','r')
dict_reader = csv.DictReader(csv_file)

res = dict_reader.fieldnames
print(res)
結果:

['name', 'score']

2 / 輸出成常見python字典對象

import csv

csv_file = open('csv_test03.csv','r')
dict_reader = csv.DictReader(csv_file)

#創建空字典
result = {}
#遍歷取值
for item in dict_reader:
    result[item['name']] = item['score']
print(result)
結果:

{'wang': '100', 'li': '80', 'hoho': '50'}


python讀取文件事出錯:

 'gbk' codec can't decode byte 0xad in position 2742: illegal multibyte sequence 錯誤的解決辦法:


使用notepad++將文件轉換成utf-8 無 BOM編碼格式後讀取

FILE_OBJECT= open('order.log','r', encoding='UTF-8')






發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章