我正在将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');
谢谢!
最佳答案
您可以正常方式将Seek与文件对象一起使用,然后在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]
关于python - 如何用numpy读取部分二进制文件?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14245094/