【问题标题】:Store pkl / binary in MetaData在元数据中存储 pkl / 二进制文件
【发布时间】:2017-07-05 17:24:38
【问题描述】:

我正在编写一个函数,它应该存储自定义类对象的文本表示,cl 我有一些代码写入文件并从cl 中取出必要的信息。

现在我需要倒退,读取文件并返回cl 的新实例。问题是,该文件没有保留cl 的所有重要部分,因为出于本文本文档的目的,它的某些部分是不必要的。 .jpg 文件允许您存储元数据,例如快门速度和位置。我想将cl 中不应该出现在.txt.csv 文件元数据中的文本部分的部分存储起来。有没有办法在 Python 中将某些内容显式写入文本文件的元数据? 此外,是否可以在元数据中写入整个对象的字节码 .pkl 表示形式?

【问题讨论】:

  • 当你说元数据时,你是什么意思。这种事情是非常特定于操作系统和文件系统的
  • 我在 Windows7 机器上。它存储上次更新等信息的位置。我相信它位于存储层次结构的顶层??
  • JPG 可让您存储相机、快门速度、GPS 位置等信息。我想尝试将其添加到 .txt.csv 文件并将二进制数据放入后台

标签: python file oop pickle


【解决方案1】:

文本文件不像 jpg 文件那样具有元数据。 jpeg 文件专门设计用于在图像中包含元数据作为额外结构化信息的方法。文本文件不是:文本文件中的每个字符通常都会显示给用户。 同样,CSV 文件中的所有内容都是该文件所代表的表格中一个单元格的一部分。

也就是说,多年来已经存在或存在的一些类似于文本文件元数据的东西可能会给您一些想法。我认为这些都不理想,但我会举一些例子让你了解元数据领域有多复杂,以及人们在类似情况下做了什么。

  • 某些文件系统具有与每个可以扩展的文件相关联的元数据。例如,NTFS 有流; HFS 和 HFSplus 具有资源分叉或其他属性; Linux 在其大多数文件系统上都具有扩展属性。您可能会将您的泡菜信息存储在这些文件系统元数据中。有缺点。一些文件系统没有这个元数据。一些用于复制和操作文件的工具将无法识别(或故意剥离)元数据。

  • 您可以有一个 .txt 文件和一个 .pcl 文件,其中 .txt 文件包含您的文本表示,而 .pkl 文件包含其他信息。

  • 过去,一些 DOS 程序会在 DOS EOF(十进制字符 26)处停止读取文本文件。我不认为有这样的行为,但这是一个例子,有些文件格式允许您结束文件,然后仍然有程序可以使用的额外数据。

  • 使用 HTML 或实际电子表格而不是 CSV 等格式,您可以通过多种方式轻松地将内容包含在元数据中。

【讨论】:

  • 你能详细说明一下 DOS,EOF 的事情吗?我明白它是如何工作的。你知道现代操作系统如何处理 EOF 以及如何在 Python 中解决这个问题吗? (这似乎是一个非常低级的系统问题,Python 不是 /best/ 处理的)
  • @Adam 现代操作系统(包括使用文件句柄时从 DOS 2.0 开始的 DOS)在读取文件末尾时返回读取的 0 字节。没有 EOF 的带内信令。即使在 DOS 文本文件中也不总是有端带信号
猜你喜欢
  • 1970-01-01
  • 2017-09-06
  • 2010-11-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-07-07
  • 1970-01-01
相关资源
最近更新 更多