【问题标题】:.dat file in pythonpython中的.dat文件
【发布时间】:2015-08-05 13:13:27
【问题描述】:

我正在使用 OpenCV 在 python 中做一个项目。我必须将大量整数数据(数据库中图像的特征)存储在一个单独的文件中。我可以使用 .txt 文件,但它将整数值存储为字符串。 有没有什么方法可以像 MATLAB 中的 .dat 文件一样将整数值直接存储为 python 中的整数?

【问题讨论】:

  • 什么意思"整数值直接作为整数"?!
  • 我的意思是如果我尝试将 5 存储在 .txt 文件中,它将存储为字符,而不是整数。
  • 什么是 "integer"?你在谈论二进制表示吗?每个数字有多少位?
  • 请展示你已经完成的工作。
  • 整数可能在numpy 数组中。你可以使用它的序列化方法,例如numpy.savez_compressed()。否则,见reading struct in python from created struct in c——写法更简单,直接调用file.write(array_with_c_types)即可。

标签: python matlab opencv


【解决方案1】:

您可以使用struct 将整数打包为字节格式并将它们写入 dat 文件。

对于整数,这将产生一个每个整数包含 4 个字节的文件,如果您有非常大的数字,这将节省一点空间(相对于文本格式)。如果数字较小,csv 格式可能会更好。

import struct

data = [1,2,3,4,5,6,7,8,9]

with open('data.dat', 'wb') as data_file:
    data_file.write(struct.pack('i'*len(data), *data))

然后再读回来

with open('data.dat', 'rb') as data_file:
    values = struct.unpack('i'*len(data), data_file.read())

【讨论】:

  • 对于百万像素的图像数据可能效率低下。有other options
  • 它可能是。最有效和最压缩的格式可能是图像本身。
猜你喜欢
  • 2021-04-08
  • 2021-12-09
  • 2020-05-04
  • 1970-01-01
  • 2022-10-05
  • 2019-10-30
  • 1970-01-01
  • 2018-08-26
  • 2021-06-10
相关资源
最近更新 更多