我正在将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/

10-12 21:46