【发布时间】:2020-04-03 07:02:06
【问题描述】:
我正在尝试使用 f1= open('rec_1.dat') 打开一个 .dat 文件,我得到 <_io.textiowrapper name="rec_1.dat" mode="r" encoding="cp1252">。然后我将指令更改为f1= open('rec_1.dat', encoding = 'cp1252),我收到以下错误'charmap' codec can't decode byte 0x81 in position 1396: character maps to .
如果我将编码更改为“ISO-8859-1”,我可以使用file_contents = f1.read() 但我会得到完全的垃圾,例如 ïÿéÿðÿéÿòÿèÿñÿèÿíÿèÿ 等等。我有什么遗漏吗?
【问题讨论】:
-
我希望扩展名为 .dat 的文件更有可能包含某种二进制数据,而不是任何人类可读的数据。这个文件的确切来源是什么?
-
您期望文件内容是什么样的,为什么?特别是,为什么它应该是除了“像ïÿéÿðÿéÿòÿèÿñÿèÿíÿèÿ等完全垃圾”?
-
该文件几乎可以肯定地连续包含这些整数值的原始二进制表示。在任何文本编码下,这些看起来都没有意义。您链接的网站提到“12 位分辨率”,因此这些值甚至可能是位压缩的(这样文件的某些字节是两个不同样本值的一部分)。
-
不,如果不知道(或缓慢而痛苦地弄清楚)数据的预期解释方式,您就无法有意义地解释数据。
-
这些文件似乎是一种名为 WFDB 的格式。一些信息可以在这里找到:physionet.org/physiotools/wag/signal-5.htm。您不能自己对 .dat 文件做任何事情,您必须阅读相应的 .hdr 文件(这是人类可读的文本)以找出二进制数据的确切格式。
标签: python