根据文件扩展名写入数据到文件,并自动判断是否使用多线程。 TODO: 修正多线程保存功能,暂不可用,所以阈值设置的很大 参数: - file_path (str): 文件路径。 - data (any): 要写入的数据。 - mode (str): 写入模式,默认为 'a'(追加模式),也可以选择 'w'(覆盖模式)。 - chunk_size (int): 当数据量较大时,使用多线程写入,单位为字节,默认为 10MB。 - encoding (str): 写入文件的编码格式,默认为 'utf-8'。
(file_path, data, mode='a', chunk_size=1024*1024*100000, encoding='utf-8')
| 56 | |
| 57 | |
| 58 | def write(file_path, data, mode='a', chunk_size=1024*1024*100000, encoding='utf-8'): |
| 59 | """ |
| 60 | 根据文件扩展名写入数据到文件,并自动判断是否使用多线程。 |
| 61 | TODO: 修正多线程保存功能,暂不可用,所以阈值设置的很大 |
| 62 | |
| 63 | 参数: |
| 64 | - file_path (str): 文件路径。 |
| 65 | - data (any): 要写入的数据。 |
| 66 | - mode (str): 写入模式,默认为 'a'(追加模式),也可以选择 'w'(覆盖模式)。 |
| 67 | - chunk_size (int): 当数据量较大时,使用多线程写入,单位为字节,默认为 10MB。 |
| 68 | - encoding (str): 写入文件的编码格式,默认为 'utf-8'。 |
| 69 | """ |
| 70 | |
| 71 | create_if_not_exist(file_path) |
| 72 | |
| 73 | file_ext = os.path.splitext(file_path)[1].lower() |
| 74 | |
| 75 | try: |
| 76 | if file_ext == '.txt': |
| 77 | write_txt(file_path, data, mode, chunk_size, encoding) |
| 78 | elif file_ext == '.csv': |
| 79 | write_csv(file_path, data, mode, chunk_size, encoding) |
| 80 | elif file_ext == '.json': |
| 81 | write_json(file_path, data, mode, encoding) |
| 82 | elif file_ext == '.yaml' or file_ext == '.yml': |
| 83 | write_yaml(file_path, data, mode, encoding) |
| 84 | elif file_ext == '.xlsx': |
| 85 | write_xlsx(file_path, data, encoding) |
| 86 | elif file_ext == '.md': |
| 87 | write_markdown(file_path, data, mode, encoding) |
| 88 | elif file_ext == '.jsonl': |
| 89 | write_jsonl(file_path, data, mode, chunk_size, encoding) |
| 90 | else: |
| 91 | raise ValueError(f"不支持的文件格式: {file_ext}") |
| 92 | except Exception as e: |
| 93 | logger.error(f"写入文件 {file_path} 时出错: {e}") |
| 94 | raise |
| 95 | |
| 96 | |
| 97 |
nothing calls this directly
no test coverage detected