打开以写入和读取大文件Python

2024-10-03 15:33:46 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图使用os.openmmapfrom_buffer()读取一个大的二进制文件(>;5gb)。在

运行fd = os.open(filePath, O_RDWR)时出现错误OSError: [Errno 22] Invalid argument: H:\\xyz.wdp。我意识到问题是文件太大了,因为使用相似但更小的文件O_WRONLY或{},它是有效的。 不幸的是,如果我使用O_WRONLYO_RDONLY,那么from_buffer()函数(TypeError: mmap can't modify a readonly memory map.)的访问被拒绝。在

我的示例代码是:

class StructData(Structure):
    _pack_ = 1
    _fields_ = [('bin', c_ubyte)]

fd = os.open(filePath, os.O_RDWR)
mmap_file = mmap.mmap(fd, length=80, access=mmap.ACCESS_WRITE, offset=0)
d_array = StructData*80
data = d_array.from_buffer(mmap_file)

你能帮我解决这个问题吗?我想添加我使用大文件,我需要它运行得非常快,我想避免使用struct.unpack等等。在

谢谢你!在


Tags: 文件fromgtosbuffer二进制openarray
1条回答
网友
1楼 · 发布于 2024-10-03 15:33:46

从路径上看,你好像在用Windows。 文档(https://docs.python.org/2/library/os.html#os.open)说应该使用os.O_二进制文件在Windows上以二进制模式打开文件。 你试过下列方法吗?(以防创建文件…)

fd = os.open(filePath, os.O_RDWR | os.O_CREAT | os.O_TRUNC | os.O_BINARY)

我不知道Windows中支持大文件的情况: https://docs.python.org/2/library/posix.html

相关问题 更多 >