写入CSV文件,支持多线程处理。 参数: - file_path (str): 文件路径。 - data (DataFrame): 要写入的CSV数据。 - mode (str): 写入模式,默认为 'a'(追加模式),可以选择 'w'(覆盖模式)。 - chunk_size (int): 当数据量较大时,使用多线程写入,单位为字节。 - encoding (str): 写入文件的编码格式,默认为 'utf-8'。
(file_path, data, mode, chunk_size, encoding='utf-8')
| 487 | |
| 488 | |
| 489 | def write_csv(file_path, data, mode, chunk_size, encoding='utf-8'): |
| 490 | """ |
| 491 | 写入CSV文件,支持多线程处理。 |
| 492 | |
| 493 | 参数: |
| 494 | - file_path (str): 文件路径。 |
| 495 | - data (DataFrame): 要写入的CSV数据。 |
| 496 | - mode (str): 写入模式,默认为 'a'(追加模式),可以选择 'w'(覆盖模式)。 |
| 497 | - chunk_size (int): 当数据量较大时,使用多线程写入,单位为字节。 |
| 498 | - encoding (str): 写入文件的编码格式,默认为 'utf-8'。 |
| 499 | """ |
| 500 | data_size = data.memory_usage(index=True).sum() # 计算DataFrame的大小 |
| 501 | if data_size > chunk_size: |
| 502 | logger.info(f"数据较大,启用多线程写入") |
| 503 | write_csv_multithread(file_path, data, mode, chunk_size, encoding) |
| 504 | else: |
| 505 | logger.info(f"写入CSV文件: {file_path}") |
| 506 | data.to_csv(file_path, mode=mode, encoding=encoding, index=False) |
| 507 | |
| 508 | |
| 509 | def write_csv_multithread(file_path, data, mode, chunk_size, encoding='utf-8'): |
no test coverage detected