我需要实现的是使用cloudstorage
库将一个文件列表连接到一个文件中。这需要在mapreduce shard中进行,它的内存上限为512MB,但连接的文件可能大于512MB。在
当文件大小达到内存限制时,以下代码段将中断。在
list_of_files = [...]
with cloudstorage.open(filename...) as file_handler:
for a in list_of_files:
with cloudstorage.open(a) as f:
file_handler.write(f.read())
有没有办法绕过这个问题?也许打开或附加文件块?怎么做呢?谢谢!在
==编辑==
经过更多的测试,内存限制似乎只适用于f.read()
,而写入大文件就可以了。分块读取文件解决了我的问题,但我非常喜欢@ianlewis指出的compose()
函数。谢谢!在
{将每个文件合并到一个较小的文件中,然后将它们合并到一个较小的文件中。您将希望使用库中的^{} function 。好像有no docs on it yet。在
在你上传了所有的部分之后,下面的一些东西应该可以工作了。有一件事要确保,要组合的路径文件不包含bucket名称或开头的斜杠。在
如果可能,您可能还希望使用gsutil工具进行签出。它可以为你做automatic splitting, uploading in parallel, and compositing of large files。在
相关问题 更多 >
编程相关推荐