2011-11-15 33 views
0

我正在阅读Fortran未格式化的文件。如果我使用Python来阅读他们,Fortran未格式化文件的字符编码?

import struct 
f = open(filename,'r') 
values = struct.unpack('%20s',f.read(20)) 

我得到的人物,如

\ XF8,\ XBF,\ X-AD,\ xe8,\ XD8,\ XEC,\ XD5,\ X10 \ XFD ,\ xbf

等等。其中每一个都是长度为1的字符串替换函数不适用于它们。

我正在处理什么字符集?

编辑

粘贴f.read()部分输出:

\xdf\xde#\xc0|\x18B\x9f\xec\xd6!\xc0]\x0b\x08b\xb1k#\xc0R#g}\xae\x14\xe8?\xde\x1c\x84b\x07S\xe8?.\x0b\x15\x07\xae\x99\xc5\xbf\xac\x9c\xa4\xf0\x8aV\xe4?K\t\x8a(3/\[email protected]\x97]rW\x8e?\[email protected]\xe8\xfe\x9f0\x92P\[email protected]\xc6&\x98-VV\[email protected]\xa2\x8e\x86\xa8\xf2-\[email protected]\xca\xa6\xc9\xe3W\[email protected]\x1f\x96\x0f\xb2\nH\[email protected]\xc31Jv\xf8\x98\[email protected]\xacOBu\xcf\xd6'@A\xf0\x9fJ\x84{(@\x1d`.N\x9b\x15'@4\xa5\xb2\x91)\xd3'@\x851\x9d\x83\x98\x00\x02\xc0\xa2Iy\x1b\xca\xf2\x04\xc0eu\rt\xb2\xd5\x04\xc0V\x92\xaf\x9f\xf6\xbd\x02\xc0:\r\xfc\xc6\xf8\xfb\xae\xbf!\x95QZ\xcdx\xe7\xbf\x8e\xd9O\xdf\xd1\xc0\xe4?\xbe\xba\xae\xa5\xb3\x9e\xac\xbfJ0h('=\xf0?\x83\xd67\xcf\n4\xe0?$\xf9\x0c\x00\x05\xe5\xfc?\x97+c\x9d\xd1\xf0?V\xfc\xc8\xe4\x12\x98\xf3?m\x8aa\xc4\xe5}\xf8?s\x9b\xb4{\xf22\[email protected]\xc3t'\xd0-\xdc\xf5?\xf9\x8eb&Y\x7f\x0c\xc0\x8c\x91\xa7\xe2\xf0|\x0c\xc0d\xd3b\x1a_\x05\x06\xc0u\xa7\x9b\x8e\xcc\xaa\x0b\xc0\xe7\x8a0CG+\x0f\xc0s\x10\x07\x8f 
+0

这与Fortran有什么关系?这纯粹是一个python问题。 – Rook

+0

是的,但表明它们是由Fortran生成的,可能会缩小可能性? – hatmatrix

+2

我认为我们将需要看到大量的实际文件。 –

回答

2

你对文件的编写的任何信息,即使用了什么样的Fortran write报表?如果不是,你只会猜测。请记住,未格式化的记录通常包含二进制数据,例如整数或浮点数,通常不包含编码的字符数据。我的猜测是你在看二进制整数。你也应该在Python中以二进制文件的形式打开文件('rb')。这对Windows等平台有所帮助。

更新:现在你已经披露的数据类型real(8), allocatable :: xxx(:),并写着:

write(filenum) (xxx(i),i = 1,imax) 

很明显,数据是二进制的,而不是编码的字符。