【发布时间】:2017-04-06 07:11:24
【问题描述】:
我有一个在应用程序中编码的 bin 文件,我需要访问该文件并将其转换为 csv 文件。我已经获得了文档,但不确定如何在 Python 中访问该文件的内容。
以下是有关数据集如何序列化的一些详细信息
Datasets.bin 是使用 Qt 的 QDataStream 序列化使用版本 QDataStream::Qt_4_7 序列化的 DataSet 类的列表。
The format of the datasets.bin file is:
quint32 Magic Number 0x46474247
quint32 Version 1
quint32 DataSet Marker 0x44415441
qint32 # of DataSets n
DataSet DataSet 1
DataSet DataSet 2
.
.
.
.
DataSet DataSet n
The format of each DataSet is:
quint32 Magic Number 0x53455455
QString Name
quint32 Flags Bit field (Set Table)
QString Id [Optional]
QColor Color [Optional]
qint32 Units [Optional]
QStringList Creator Ids [Optional]
bool Hidden [Optional]
QList<double> Thresholds [Optional]
QString Source [Optional]
qint32 Role [Optional]
QVector<QPointF> data points
我一直在查看 PyQt4 数据流文档,但似乎找不到任何具体示例。任何为我指明正确方向的帮助都会很棒
【问题讨论】:
-
使用 QDataStream 是否最简单,例如使用 Qt Python 绑定?
-
dl.dropboxusercontent.com/u/28824868/datasets.bin 如果有人想测试它,这里是数据集文件的链接
-
@MichaelBawol。我尝试使用 C++ 读取该文件,但在第一个
Source条目处失败。因此,格式不完整/错误或文件已损坏。你从哪里得到文件?你有没有一组已知值的小玩具示例? -
每个数据集 bin 都存储有一个 xml 文件。 dl.dropboxusercontent.com/u/28824868/session.xml 数据集来自我为下载和操作传感器数据而构建的自定义软件。公司已经倒闭并为我提供了格式。这是我收到的完整格式文档。 dl.dropboxusercontent.com/u/28824868/…
-
@MichaelBawol。我能够创建一个 C++ 工具,该工具可以读取格式化文档中包含的数据集文件。但是,它无法读取其他数据集文件,我现在可以确定该文件已损坏或格式不同。我已经根据我学到的知识更新了我的答案,但我仍然看不到如何在 PyQt 中正确读取
QList/QVector类型。我怀疑这可能是不可能的。但是,我的答案中的当前代码至少显示了 如何 正确处理格式。
标签: python qt csv pyqt qdatastream