我目前有以下csv编写器类:
class csvwriter():
writer = None
writehandler = None
@classmethod
def open(cls,file):
cls.writehandler = open(file,'wb')
cls.writer = csv.writer(cls.writehandler, delimiter=',',quotechar='"', quoting=csv.QUOTE_NONNUMERIC)
@classmethod
def write(cls,arr):
cls.writer.writerow(arr)
@classmethod
def close(cls):
cls.writehandler.close()
可以生成正确的csv文件,而无需一次将完整的数组存储在内存中。
但是,通过使用此代码创建的文件可能非常大,因此我希望压缩它们,而不是将它们编译为未压缩。 (为了节省磁盘使用量)。我也无法将文件有效地存储在内存中,因为我期望超过20gb的文件经常出现。
生成的文件的收件人通常不是他们PC的系统管理员,也不是都使用linux,所以我受限于我能够用于此任务的算法类型。优选地,该解决方案将使用在Windows,OSX和任何Linux分发中本机可读(不需要可执行文件)的压缩方案。
我发现gzip在Python中提供了一个非常方便的界面,但在windows中阅读gzipped文件似乎很麻烦..理想情况下我会将它们放在zip存档中,但zip存档不允许你追加数据到存档中已存在的文件,然后强制我将整个文件存储在内存中,或者将数据写入几个我能够装入内存的较小文件中。
我的问题:是否有一种解决方案可以从两全其美的优势中获益?在最终用户的机器上读取目标格式的工具的广泛可用性,以及附加的能力,而不是一次性写入整个文件?
先谢谢你的考虑!