我正在嘗試使用os.open
,mmap
和from_buffer()
來讀取大型二進制文件(> 5 GB)。對於編寫和閱讀大文件而言是開放的Python
運行fd = os.open(filePath, O_RDWR)
錯誤OSError: [Errno 22] Invalid argument: H:\\xyz.wdp
引發。我意識到問題在於文件太大,因爲使用類似但較小的文件,O_WRONLY
或O_RDONLY
,它的工作。 不幸的是,如果我使用O_WRONLY
或O_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
等。
謝謝!
如何[MCVE(HTTP://計算器.COM /幫助/ MCVE)? –
沒有更多的信息,很難弄清楚你的問題。但是,似乎filePath變量有一個語法錯誤,所以如果你寫了你正在存儲的內容,這將是非常有用的。 – Jalo
我用示例代碼更新了我的問題 – Pablo