【问题标题】:Save data as a *.dat file?将数据保存为 *.dat 文件?
【发布时间】:2017-10-31 14:42:28
【问题描述】:

我正在用 Python 编写一个程序,它应该导入 *.dat 文件,从某些列中减去一个特定值,然后将文件以 *.dat 格式保存在不同的目录中。

我目前的策略是将数据文件加载到numpy 数组中,执行计算然后保存。我被储蓄部分困住了。我不知道如何在 python 中以*.dat 格式保存文件。谁能帮我?或者有没有不需要将*.dat 文件作为numpy 数组导入的替代方法?非常感谢!

【问题讨论】:

  • 你知道如何在 Python 中保存 any 个文件吗?如果没有 - 您是否尝试过查阅 Python 文档?如果没有,我建议您这样做或查看this question
  • 没有特定的“dat”格式。
  • 你能具体说明你在说什么数据格式吗?是二进制文件吗?或具有某种特定格式的文本文件?确实没有标准的 dat 格式...如果您愿意,可以创建自己的格式

标签: python database save


【解决方案1】:

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

import struct

data = [# your data]

打开:

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

保存数据:

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

Reference.

【讨论】:

    【解决方案2】:

    您可以使用 pandas 读取和导出 .dat 文件:

    import pandas as pd
    input_df = pd.read_table('input_file_name.dat')  
    ...  
    output_df = pd.DataFrame({'column_name': column_values})  
    output_df.to_csv('output_file_name.dat')
    

    【讨论】:

      【解决方案3】:

      假设你的文件看起来像

      file = open(filename, "r")
      

      您需要做的就是打开另一个带有“w”作为第二个参数的文件

      file = open(new_file-path,"w")
      file.write(data)
      file.close()
      

      如果你的数据不是字符串,要么将其设为字符串,要么使用

      file = open(filename, "rb")
      file = open(filename, "wb")
      

      读写时,因为这些读写原始字节

      【讨论】:

      • 如果数据是numpy产生的,会报错:“TypeError: write() argument must be str, not numpy.ndarray”
      • 刚刚将其更改为包含
      【解决方案4】:

      .dat 文件可以使用 pandas 库读取:

      df = pd.read_csv('xxxx.dat', sep='\s+', header=None, skiprows=1)
      

      skiprows=1 将忽略第一行,即标题。

      \s+ 是.dat 文件的分隔符(默认)。

      【讨论】:

        【解决方案5】:

        如果我错了,请纠正我,但打开、写入和随后关闭文件应该算作“保存”它。您可以通过运行导入脚本并比较上次修改日期来自行测试。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2019-10-24
          • 1970-01-01
          • 1970-01-01
          • 2013-12-23
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2017-05-29
          相关资源
          最近更新 更多