我想用Python读取二进制文件。到目前为止,我使用numpy.fromfile
但是无法弄清楚结果数组的结构。我有一个IDL函数可以读取文件,所以这是我唯一要做的事情。我根本不了解IDL。
以下IDL函数将读取文件并返回lc,zgrid,fnu,efnu等:
openr,lun,'file.dat',/swap_if_big_endian,/get_lun
s = lonarr(4) & readu,lun,s
NFILT=s[0] & NTEMP = s[1] & NZ = s[2] & NOBJ = s[3]
tempfilt = dblarr(NFILT,NTEMP,NZ)
lc = dblarr(NFILT) ; central wavelengths
zgrid = dblarr(NZ)
fnu = dblarr(NFILT,NOBJ)
efnu = dblarr(NFILT,NOBJ)
readu,lun,tempfilt,lc,zgrid,fnu,efnu
close,/all
但我不确定如何在Python中复制它。任何帮助表示赞赏。感谢。
我不是在寻找翻译。我正在寻找一个跳板,我可以尝试解决这个问题。
答案 0 :(得分:1)
要读取二进制文件(假设这是32位或用户已经知道的东西),我首先会创建一个使用的方法,
>>> a = '00011111001101110000101010101010'
>>> int(a,2)
523700906
也就是说,我们的方法必须将其转换为我们自己制作的内容,例如:
def binaryToAscii(string_of_binary):
'''
binaryToAscii takes in a string of binary and returns an ASCII character
'''
charVal = int(string_of_binary,2)
char = chr(charVal)
return char
下一步是制作一个合并binaryToAscii
的方法,以便我们连接一些字符串或writing to a new file。这应由用户决定。
顺便说一句,如果您没有将二进制文件检索为字符串,那么there our built in methods that turn unicode characters into ascii values by taking in there unicode value (binary included)。
关于阅读文件,可以使用the same link for reading and writing to a file。