如何用numpy读取部分二进制文件?

bro*_*red 12 python numpy scipy

我正在将matlab脚本转换为numpy,但在从二进制文件中读取数据时遇到一些问题.fseek在使用fromfile跳过文件开头时是否存在等效?这是我需要做的提取类型:

fid = fopen(fname);
fseek(fid, 8, 'bof');
second = fread(fid, 1, 'schar');
fseek(fid, 100, 'bof');
total_cycles = fread(fid, 1, 'uint32', 0, 'l');
start_cycle = fread(fid, 1, 'uint32', 0, 'l');
Run Code Online (Sandbox Code Playgroud)

谢谢!

tom*_*m10 24

您可以以正常方式使用搜索文件对象,然后使用此文件对象fromfile.这是一个完整的例子:

import numpy as np
import os

data = np.arange(100, dtype=np.int)
data.tofile("temp")  # save the data

f = open("temp", "rb")  # reopen the file
f.seek(256, os.SEEK_SET)  # seek

x = np.fromfile(f, dtype=np.int)  # read the data into numpy
print x 
# [64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88
# 89 90 91 92 93 94 95 96 97 98 99]
Run Code Online (Sandbox Code Playgroud)

  • Dang,文件对象而不是文件名!这正是我正在寻找的,这应该添加到fromfile的文档...谢谢! (2认同)