【发布时间】:2021-09-19 04:45:52
【问题描述】:
我正在使用分块(在 iPython 和 Mac OS 中使用 Python 3.7.6)将大约 200 个 csv 文件(大多数 10 到 200 MB)合并到闪存驱动器上的单个文件中。
合并后的文件大小为 4.29 GB。当我尝试在其上写入另一个文件(大小约为 150 MB)时,我得到OSError: [Errno 27] File too large。代码如下:
import pandas as pd
import os
paths_to_combine = ['file1.csv', ..., 'file200.csv'] # contains 200 files
output_path = 'all.csv'
for file in all_result_filenames:
chunk_container = pd.read_csv(file, chunksize=50000)
for chunk in chunk_container:
chunk.to_csv(output_path, mode="a", header=False)
通过阅读类似的问题(here 和 here),似乎在写入 4 GB 以上的文件时可能存在寻址问题。由于问题出在操作系统上,因此我不知道接下来要尝试什么。感谢您的帮助!
【问题讨论】:
-
您正在写入的驱动器的格式是什么?是FAT32吗? Mac 的默认 HFS+ 或 APFS 支持远大于 4 GB 的文件。
-
啊,好点。是的,它是 MS-DOS (FAT32)——我正在写入闪存驱动器。
-
哦,您正在尝试在闪存驱动器上写入(“闪存驱动器上的单个文件”)。您需要使用磁盘工具将该闪存驱动器重新格式化为 exFAT 而不是 FAT32。问题与操作系统无关,与驱动器格式有关。
-
请注意,重新格式化将破坏驱动器上当前的所有数据。您需要将其上的任何内容复制到其他地方,然后在重新格式化后将其复制回来。 exFAT 适用于大多数操作系统:macOS 和 Windows。它也适用于 Linux 机器,具体取决于口味。
-
非常感谢,这很简单!我会尝试重新格式化驱动器。
标签: python python-3.x pandas file-io operating-system