我没有Fortran的工作知识,也不是Python(2)的高级用户,所以请记住这一点,并请理解!你知道吗
我试图用Python2将一些数据写入一个二进制文件(用“wb”打开一个空的二进制文件),它必须在Fortran中作为一个“未格式化”文件打开(一个.f90文件)。问题是,这样一个Python生成的二进制文件可以读取(在Fortran中),如果我有,在用Fortran打开文件时
“form='unformatted'”和“access='stream'”。你知道吗
我希望用python2编写一个二进制文件,这样我就不需要“access='stream'”。我将这个二进制文件与Fortran中的大量非公共代码(我没有开发)结合使用,并且不想接触源代码。我做的改变只是为了测试我自己。你知道吗
如果我不使用“access='stream'”,那么我只会得到输出的无意义的值。你知道吗
我以前是用下面的(byteswap()来改变endianness)来写二进制文件的,但没有用。你知道吗
dxidxup = 1/dxm
dxidxup = np.array(dxidxup,dtype='<f4')
dxidxup_write = dxidxup.byteswap()
dxidxup_write.tofile(new_mesh)
我也试着用np.ASCONTIGUUSARRAY公司以及np.asfortran数组将数据写入二进制文件,但也不起作用。你知道吗
dxidxup = 1/dxm
dxidxup = np.array(dxidxup)
dxidxup = np.ascontiguousarray(dxidxup,dtype='<f4')
dxidxup_write = dxidxup.byteswap()
dxidxup_write.tofile(new_mesh)
我试过了结构包同样,根据this link。我不知道还有什么其他的途径可以追求。。。我感谢您的想法/意见!你知道吗
我希望一切都有意义。。你知道吗
嗯,这可能很棘手。二进制输入/输出特别依赖于所选的Fortran编译器,限制了可移植性。你知道吗
在非匹配的顺序或直接输入/输出的情况下,Fortran使逻辑记录被读或写。Fortran在写入的数据的开头和结尾插入整数字节计数。你知道吗
下面是一个使用
fort77
的长度为2和3的两条记录的示例。用于生成二进制文件的Python代码:读取文件的Fortran 77代码:
如果您喜欢任何其他编译器,您必须弄清楚字节计数是
int
还是longint
。与f2c
不同,默认情况下gfortran
使用int32
,可以通过设置-frecord-marker=8
来更改。你知道吗相关问题 更多 >
编程相关推荐