如何在python中将二进制文件读入变量

时间:2012-09-29 16:30:38

标签: python binary

我正在处理来自大型模型的信息,这意味着我有很多带有两个浮点列的大型ascii文件(比方说X和Y)。但是,每当我必须阅读这些文件时,它需要很长时间,所以我认为将它们转换为二进制文件会使读取过程更快。

我使用uu.encode(ascii_file,binary_file)命令将我的asciifiles转换为二进制文件,并且它工作得很好(实际上,测试了解码部分,我恢复了相同的文件)。

我的问题是:无论如何将二进制文件直接读入python并将数据转换为两个变量(x和y)?

谢谢!

3 个答案:

答案 0 :(得分:3)

您没有指定在Python中如何表示浮点列。 cPickle模块是一种快速通用的解决方案,其缺点是它只创建可从Python读取的文件,并且永远不允许它读取不受信任的数据(从网络接收)。它可能只适用于所有常规数据类型,包括numpy数组。

如果您可以使用numpy并将数据存储在numpy数组中,请查看numpy.savenumpy.savetxt以及相应的加载函数,这些函数的性能优于手动提取数据。

array.array还有将数组数据写入文件的方法,缺点是数组数据是以原生格式编写的,不能从不同的架构中读取。

答案 1 :(得分:1)

查看python的struct module。这可能是您希望用于读取和写入数据的内容。

答案 2 :(得分:0)

我建议代替建议的struct模块,如果你的模型只是浮点/双精度(坐标),你应该看到the array module,必须比struct模块中的任何操作都快得多。它的缺点是集合是同质的,你需要在奇数索引中有第一个值,在偶数索引中有第二个值,或者顺序。