如何以块的形式写入文件以规避大文件大小的错误?

     2023-03-07     291

关键词:

【中文标题】如何以块的形式写入文件以规避大文件大小的错误?【英文标题】:How do I write to file in blocks in order to circumvent an error with large file sizes? 【发布时间】:2019-06-20 13:07:58 【问题描述】:

我有这段非常简单的代码:

f = open('file.txt','w+')
f.write(result)
f.close()

问题在于字符串“result”的大小可能高达数 GB。虽然创建成功,但是写入文件会导致这个错误:

OSError: [Errno 22] Invalid argument

我了解到这是在 OS X 中运行 Python 的一个已知问题(我正在运行 10.13 High Sierra)。如何将 write 函数分解成块以绕过它?

(我也知道这在 32 位版本中由于固有的限制是一个无法克服的问题,但我运行的是 64 位)

【问题讨论】:

你要写入哪个文件系统? 【参考方案1】:

尝试分块书写

def chunks(l, n):
    """Yield successive n-sized chunks from l."""
    for i in range(0, len(l), n):
        yield l[i:i + n]


with open('file.txt','w+') as f:  
    for chunk in chunks(results, 1024):  # try to play with this number
        f.write(chunk)

【讨论】:

这行得通!但是,请注意,您在倒数第二行末尾错过了一个冒号。请注意查看此线程的其他人:这会减慢较小字符串的写入时间。但是,它可能是唯一成功编写较大字体的方法。【参考方案2】:

如果问题真的是内存不足,可以尝试逐行追加。

with open('output.txt', 'a') as f:
    for item in result:
        f.write(item)

在这种情况下,result 是行列表。您应该根据 result 对象的内容来调整它。

【讨论】:

如何使用套接字 C/C++ 以块的形式发送文件?

】如何使用套接字C/C++以块的形式发送文件?【英文标题】:howtosendfilesinchunkusingsocketc/C++?【发布时间】:2013-09-2601:02:26【问题描述】:我一直在尝试寻找如何在C或C++中以块的形式发送文件我在这里查看了一些示例,但没有找到... 查看详情

.net core web api - 如何以块的形式返回表结果

】.netcorewebapi-如何以块的形式返回表结果【英文标题】:.netcorewebapi-Howtoreturntableresultsinchunks【发布时间】:2021-11-2613:57:36【问题描述】:当最终用户加载表格时,我们会向他们返回数以万计的结果。我们希望返回所有数据,以... 查看详情

在c#中以块的形式读取整个文件

】在c#中以块的形式读取整个文件【英文标题】:Readwholefileinblocksinc#【发布时间】:2012-04-1713:06:23【问题描述】:我有一份来自银行的文件,其结构非常特殊。其中有账号(25)、账户余额开始(60F)、账户余额停止(62F)、交... 查看详情

python以块的形式读取文件而不将整个文件加载到内存中。(代码片段)

查看详情

以块的形式处理比物理内存大得多的数据

】以块的形式处理比物理内存大得多的数据【英文标题】:Processdata,muchlargerthanphysicalmemory,inchunks【发布时间】:2013-07-1615:40:23【问题描述】:我需要处理一些比RAM大几百倍的数据。我想读一大块,处理它,保存结果,释放内存... 查看详情

Python 在 Mac OS 上以块的形式解码 MP3

】Python在MacOS上以块的形式解码MP3【英文标题】:PythondecodeMP3inchunksonMacOS【发布时间】:2012-12-2717:48:16【问题描述】:我有一个TornadoPython服务器,它一次接受一个块的可变比特率mp3文件(这些块由固定数量的帧组成)。我所做的... 查看详情

有没有办法以块的形式划分和运行testng测试而不是全套(代码片段)

...100多个测试,大多数测试由于时间问题而失败,但是当我以块的形式运行它时它工作正常我试过的一个无效的解决方案是将少量测试分成多个testng.xml文件并逐个运行,寻找备用,我可以在运行时做同样的事情这是我的testng.xml的... 查看详情

python在quantopian中创建一个管道实例并以块的形式运行以避免内存过载。包括管道的常见导入。(代码片段)

查看详情

Azure函数通过http触发请求分块读取大文件

...,用户可以在其中上传大文件大小(无限制),并将数据以块的形式发送到API。我知道功能Ap 查看详情

以块的形式保存位图图像

】以块的形式保存位图图像【英文标题】:Savebitmapimageinchunks【发布时间】:2013-03-1120:26:06【问题描述】:我想将位图图像保存在sd卡中,我可以保存它,但有时我的活动因内存不足而被杀死。所以我可以将图像保存在块中,而... 查看详情

如何获取 HBase 表的 HFile 大小?

】如何获取HBase表的HFile大小?【英文标题】:HowtogetHFilesizeofaHBasetable?【发布时间】:2015-10-1220:01:48【问题描述】:我试图在HBase中获取HFile的一些指标详细信息。以下是问题。如何获取Hbase表的HFile的实际位置。是否有任何shell命... 查看详情

如何在C中逐字节或分块写入()到文件

】如何在C中逐字节或分块写入()到文件【英文标题】:Howtowrite()toafilebytebybyteorinchunksinC【发布时间】:2021-08-2417:19:47【问题描述】:我正在尝试逐个字节、2个字节、4个字节等以块的形式将其写入文件。我目前有这段代码,但... 查看详情

Java套接字在写入字节数组后仅获得NUL字符

...-01-0311:33:59【问题描述】:我正在尝试通过byte数组将文件以块的形式从客户端发送到服务器。我正在使用ObjectInputStream。写入有效并且文件大小匹配,但是当我打开文件时,我只得到一个空白文本文件(在IDE中打开时,显示 查看详情

如何使用 JSONStream 对大对象进行字符串化

】如何使用JSONStream对大对象进行字符串化【英文标题】:HowtouseJSONStreamtostringifyalargeobject【发布时间】:2016-04-1421:59:03【问题描述】:我想对一个大对象进行字符串化(将其写入文件),但我遇到了v8的字符串长度限制。所以我... 查看详情

从httpserviceclient读取一个巨大的结果集并以块的形式显示它们(代码片段)

我正在编写一个读取大量数据的JavaAPP:try//BuildtheURLgetMethod=newGetMethod(url);SimpleHttpResponseParserparser=newSimpleHttpResponseParser();httpServiceClient.getRequest(...);//Thistakesabout10minutesList<ApiMe 查看详情

linux文件系统基础知识

...了存储空间的浪费。但当文件扩充时,会造成文件中文件块的不连续,从而导致过多的磁盘寻道时间。  每一次文件扩展时,块分配算法就需要写入文件块的结构信息,也就是meta-dada。meta-data总是与文件一起写入存储设备,改... 查看详情

大数据分析之技术框架整理

...责管理元素据,将信息保存在内存中DataNode:保存数据,以块的形式保存。启动后需要定时的向NameNode发送心跳,报告自身存储的块信息2:HDFS的上传过程3:HDFS的下载4:NameNode的元数据安全机制以记日志的形式将每一个操作写在... 查看详情

我们如何知道 bzip2 块的未压缩数据的大小?

】我们如何知道bzip2块的未压缩数据的大小?【英文标题】:Howcanwelearnthesizeofuncompresseddataofabzip2block?【发布时间】:2016-04-0607:27:59【问题描述】:bzip2以块为单位压缩数据,其中每个块以幻数1AY&SY开头。我们可以确定每个块后... 查看详情