通過Python讀寫CSV文件的入門教程
在數(shù)據(jù)處理、數(shù)據(jù)分析和自動(dòng)化辦公場景中,CSV(逗號(hào)分隔值)文件是最常用的數(shù)據(jù)交換格式之一。Python 作為數(shù)據(jù)處理的主流語言,原生提供了csv模塊處理CSV文件,但面對(duì)復(fù)雜場景(如大文件、CSV 與 Excel 格式互轉(zhuǎn)、特殊字符處理)時(shí),原生模塊往往需要大量額外封裝。
本文將介紹如何使用 Free Spire.XLS for Python 庫實(shí)現(xiàn) CSV 文件的讀取、寫入操作。開始前先通過 pip 安裝該免費(fèi)庫:
pip install Spire.Xls.Free
相比標(biāo)準(zhǔn)庫 csv,它的核心優(yōu)勢在于:
- 更簡潔的 API - 減少代碼復(fù)雜度
- 更強(qiáng)兼容性 – 自動(dòng)處理編碼,原生支持中文、特殊字符
- 多格式支持 - CSV、Excel、PDF 等格式的互轉(zhuǎn)
1. 通過 Python 讀取CSV文件
1.1 基礎(chǔ)讀?。鹤x取整份CSV文件
以下示例展示如何讀取CSV文件的所有數(shù)據(jù),包括表頭和內(nèi)容,并打印輸出:
from spire.xls import *
def read_csv_file(file_path):
# 創(chuàng)建Workbook對(duì)象
workbook = Workbook()
# 加載CSV文件
workbook.LoadFromFile(file_path, ",", 1, 1)
# 獲取第一個(gè)工作表(CSV文件加載后默認(rèn)生成一個(gè)工作表)
worksheet = workbook.Worksheets[0]
# 獲取工作表的行數(shù)和列數(shù)
row_count = worksheet.LastRow
col_count = worksheet.LastColumn
# 遍歷所有單元格并打印數(shù)據(jù)
print("CSV文件內(nèi)容:")
for row in range(1, row_count + 1):
row_data = []
for col in range(1, col_count + 1):
cell_value = worksheet.Range[row, col].Text
row_data.append(cell_value)
print("\t".join(row_data))
# 釋放資源
workbook.Dispose()
# 調(diào)用函數(shù)讀取CSV文件
if __name__ == "__main__":
csv_file_path = "sales_data.csv" # 替換為你的CSV文件路徑
read_csv_file(csv_file_path)
讀取結(jié)果:

1.2 進(jìn)階讀?。喊礂l件篩選數(shù)據(jù)
實(shí)際場景中常需篩選特定行/列數(shù)據(jù),例如讀取“銷售額>1000”的行:
from spire.xls import *
def read_csv_with_filter(file_path):
workbook = Workbook()
workbook.LoadFromFile(file_path, ",", 1, 1)
worksheet = workbook.Worksheets[0]
row_count = worksheet.LastRow
col_count = worksheet.LastColumn
# 假設(shè)第3列是銷售額(數(shù)值型),篩選銷售額>1000的行
print("銷售額>1000的記錄:")
# 跳過表頭(第一行)
for row in range(2, row_count + 1):
# 獲取銷售額單元格的值并轉(zhuǎn)換為浮點(diǎn)數(shù)
sales_value = float(worksheet.Range[row, 3].Text)
if sales_value > 1000:
row_data = []
for col in range(1, col_count + 1):
row_data.append(worksheet.Range[row, col].Text)
print("\t".join(row_data))
workbook.Dispose()
if __name__ == "__main__":
read_csv_with_filter("sales_data.csv")
按條件讀取結(jié)果:

2. 通過 Python 寫入 CSV 文件
2.1 基礎(chǔ)寫入:創(chuàng)建并寫入 CSV 文件
以下示例展示如何創(chuàng)建新的 CSV 文件,并寫入表頭和多行數(shù)據(jù):
from spire.xls import *
def write_csv_file(file_path):
# 創(chuàng)建Workbook對(duì)象
workbook = Workbook()
# 移除默認(rèn)的工作表,創(chuàng)建新工作表
workbook.Worksheets.Clear()
worksheet = workbook.Worksheets.Add("CSV_Data")
# 定義表頭和數(shù)據(jù)
header = ["姓名", "部門", "薪資", "入職時(shí)間"]
data = [
["張三", "銷售部", "15000", "2023-01-10"],
["李四", "技術(shù)部", "12000", "2023-03-15"],
["王五", "市場部", "8000", "2022-11-20"]
]
# 寫入表頭
for col in range(len(header)):
worksheet.Range[1, col + 1].Text = header[col]
# 寫入數(shù)據(jù)
for row in range(len(data)):
for col in range(len(data[row])):
worksheet.Range[row + 2, col + 1].Text = data[row][col]
# 保存為CSV文件(指定編碼為UTF-8,避免中文亂碼)
worksheet.SaveToFile(file_path, ",", Encoding.get_UTF8())
# 釋放資源
workbook.Dispose()
print(f"CSV文件已成功寫入:{file_path}")
if __name__ == "__main__":
write_csv_file("employee_data.csv")
生成的 CSV 文件:

2.2 進(jìn)階寫入:追加數(shù)據(jù)到已有 CSV 文件
若需在已有 CSV 文件末尾追加數(shù)據(jù),可先讀取原有數(shù)據(jù),再寫入新數(shù)據(jù):
from spire.xls import *
def append_to_csv(file_path, new_data):
# 加載已有CSV文件
workbook = Workbook()
workbook.LoadFromFile(file_path, ",", 1, 1)
worksheet = workbook.Worksheets[0]
# 獲取已有數(shù)據(jù)的最后一行
last_row = worksheet.LastRow
# 追加新數(shù)據(jù)
for row in range(len(new_data)):
for col in range(len(new_data[row])):
worksheet.Range[last_row + row + 1, col + 1].Text = new_data[row][col]
# 保存到新CSV文件
worksheet.SaveToFile("new_employee_data.csv", ",", Encoding.get_UTF8())
workbook.Dispose()
if __name__ == "__main__":
# 要追加的新數(shù)據(jù)
new_data = [
["趙六", "財(cái)務(wù)部", "9000", "2023-05-01"],
["孫七", "行政部", "7500", "2023-02-28"]
]
append_to_csv("employee_data.csv", new_data)
數(shù)據(jù)追加結(jié)果:

3. 常見問題與解決方案
- 中文亂碼問題:保存時(shí)指定
Encoding.get_UTF8(),避免默認(rèn)編碼導(dǎo)致的亂碼; - 大文件讀寫卡頓:可使用
worksheet.ExportDataTable()將數(shù)據(jù)轉(zhuǎn)為DataTable,分片處理; - CSV分隔符非逗號(hào):加載/保存時(shí)指定分隔符(如制表符
\t、分號(hào);),示例:workbook.LoadFromFile(file_path, ";", 1, 1)。
4. 總結(jié)
Free Spire.XLS for Python 是處理 CSV 文件的高效工具:
- 讀取 CSV 的核心步驟是:創(chuàng)建
Workbook→ 加載文件 → 遍歷工作表單元格; - 寫入/追加 CSV 的核心步驟是:創(chuàng)建/加載工作表 → 寫入數(shù)據(jù) → 指定編碼保存為 CSV 格式。
通過本文的示例,你可以快速掌握基于 Python 的 CSV 文件讀取與寫入技巧,滿足日常數(shù)據(jù)處理、自動(dòng)化辦公等場景的需求。相比原生模塊,該庫的面向?qū)ο驛PI更易維護(hù),且能無縫對(duì)接 Excel 格式,是 Python 數(shù)據(jù)處理的優(yōu)質(zhì)選擇。
以上就是通過Python讀寫CSV文件的入門教程的詳細(xì)內(nèi)容,更多關(guān)于Python讀寫CSV文件的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
Python?Matplotlib中使用plt.savefig存儲(chǔ)圖片的方法舉例
pytorch下保存圖像有很多種方法,但是這些基本上都是基于圖像處理的,將圖像的像素指定一定的維度,下面這篇文章主要給大家介紹了關(guān)于Python?Matplotlib中使用plt.savefig存儲(chǔ)圖片的相關(guān)資料,需要的朋友可以參考下2023-02-02
NetWorkX使用方法及nx.draw()相關(guān)參數(shù)解讀
這篇文章主要介紹了NetWorkX使用方法及nx.draw()相關(guān)參數(shù)解讀,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-12-12

