使用Polars的write_csv方法时如何实现文件追加写入?
Polars实现CSV追加写入的方法
Polars不像Pandas那样给to_csv(Polars对应方法是write_csv)提供直接的mode参数,但可以通过Python内置的文件操作结合write_csv实现追加,核心是要处理好表头重复写入的问题:
- 首次写入文件时,需要写入表头+数据
- 后续追加时,只写入数据,跳过表头
具体实现代码
1. 单次追加的基础写法
import polars as pl # 准备要追加的数据集 new_data = pl.DataFrame({ "id": [3, 4], "name": ["Charlie", "David"] }) # 以追加模式打开CSV文件 with open("target.csv", "a", encoding="utf-8") as file: # 判断文件是否为空:为空则写表头,否则不写 need_header = file.tell() == 0 new_data.write_csv(file, include_header=need_header)
2. 封装成函数方便复用
如果需要多次追加数据,把逻辑封装成函数更省心:
import polars as pl def append_df_to_csv(df, csv_path): with open(csv_path, "a", encoding="utf-8") as f: # 文件指针在开头说明是新文件,需要写表头 write_header = f.tell() == 0 df.write_csv(f, include_header=write_header) # 调用示例 append_df_to_csv(new_data, "target.csv")
注意要点
- 务必保证追加的DataFrame和已有CSV的列顺序、列名完全一致,否则会出现数据错位
- 编码格式要和原文件统一,避免出现乱码
- 如果是在Windows环境下,可能需要给
open函数加上newline=""参数,防止出现多余空行
内容的提问来源于stack exchange,提问作者Mr. Caribbean
相关产品推荐
相关产品推荐

