【问题标题】:DAT file in pythonpython中的DAT文件
【发布时间】:2021-04-08 04:53:05
【问题描述】:

我对 Python 中的 .dat 文件有疑问:我无法对其进行编码。我尝试过 UTF-8、ASCII 等等。

import re

with open("mixture1.dat",'r', encoding="ascii", errors="surrogateescape") as f:
    lines = f.readlines()
    text = "".join(lines)

print(text)

这里是“mixture1.dat”的the link。应该有化学相关的东西,但我一个星期都打不开。我该怎么做?

编辑:解决方案

import pickle

def read_file(filename):
    with open(filename,  'rb')  as  FID:
        mp  = pickle.Unpickler(FID)
        data = mp.load()
    return data

工作正常

【问题讨论】:

  • 这样打开二进制文件是没有成功的机会的。字符串说“numpy.core.multiarray”。查看stackoverflow.com/questions/20518632/…
  • 那我该怎么办?我应该打开它,它对应于两个分子的混合物

标签: python encoding


【解决方案1】:

您可以为此使用numpy

import numpy as np
data = np.fromfile('mixture1.dat', dtype=float)

print(data.size)
print(data[:20])

输出:

23767
[ 5.43235748e-312  7.01653493e-205  3.63521590e+228  9.77081644e+199
  4.03065734e-277 -2.37251204e-214  9.10016855e+276  4.27255706e+180
 -2.89898361e-211 -8.83065826e-211  3.49131717e+070  1.91561942e+053
 -3.80240360e-210  2.67555322e-318 -8.83065517e-211 -5.81601764e+181
 -5.71181552e-277  8.93904783e+014  3.37067979e-234  3.07882662e-292]

【讨论】:

  • 这些数字是什么意思?它是标题还是文件本身中的数字?因为它给出的数据是在一个二进制文件中给出的,其中 10001 个值对应于以 100 ps 的时间步长测量 1 µs 的归一化荧光信号。
  • 我对@9​​87654322@的理解是,数字是文件本身的数据。
  • 我有多个这样的文件。偶数指数中的数字是相同的[1.1068773655952-211 7.82932958S-2112S-278889S-2388S-2113906079S-292 3.53306071 E + 089] [1.10687736e + 193 -7.26428739e + 192 -8.83065517e-211 3.21748662e + 272 -5.71171472e-277 8.93904783e + 014 -2.18020972e + 271 3.07882662e-292 -1.42643138e-238 6.53306071e + 089 ]
  • @SamadzadeMuhammed 您应该向创建您的 .dat 文件的人询问这些数字的含义。我们只能帮你解码文件,但不能告诉你它的含义。
猜你喜欢
  • 1970-01-01
  • 2021-12-09
  • 2020-05-04
  • 1970-01-01
  • 2022-10-05
  • 2019-10-30
  • 1970-01-01
  • 2018-08-26
  • 2021-06-10
相关资源
最近更新 更多