将数据保存为 *.dat 文件?
Posted
技术标签:
【中文标题】将数据保存为 *.dat 文件?【英文标题】:Save data as a *.dat file? 【发布时间】:2017-10-31 14:42:28 【问题描述】:我正在用 Python 编写一个程序,它应该导入 *.dat
文件,从某些列中减去一个特定值,然后将文件以 *.dat
格式保存在不同的目录中。
我目前的策略是将数据文件加载到numpy
数组中,执行计算然后保存。我被储蓄部分困住了。我不知道如何在 python 中以*.dat
格式保存文件。谁能帮我?或者有没有不需要将*.dat
文件作为numpy
数组导入的替代方法?非常感谢!
【问题讨论】:
你知道如何在 Python 中保存 any 个文件吗?如果没有 - 您是否尝试过查阅 Python 文档?如果没有,我建议您这样做或查看this question。 没有特定的“dat”格式。 你能具体说明你在说什么数据格式吗?是二进制文件吗?或具有某种特定格式的文本文件?确实没有标准的 dat 格式...如果您愿意,可以创建自己的格式 【参考方案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】:如果我错了,请纠正我,但打开、写入和随后关闭文件应该算作“保存”它。您可以通过运行导入脚本并比较上次修改日期来自行测试。
【讨论】:
以上是关于将数据保存为 *.dat 文件?的主要内容,如果未能解决你的问题,请参考以下文章
如何将 Matlab 变量转换为带有标题的 .dat(文本)文件