gpt4 book ai didi

python - csv 文件中的单独二进制数据(blob)

转载 作者:行者123 更新时间:2023-12-01 03:43:43 24 4
gpt4 key购买 nike

是否有任何安全方法可以将二进制数据与(伪)csv 文件中的文本数据混合?

一个天真的和部分解决方案是:

  • 使用复合字段分隔符,由多个字符组成(例如 \a\b 序列)
  • 将每个字段保存为文本或二进制数据将需要pseudocsv的解析器查找\a\b序列并根据已知规则读取分隔符之间的数据(例如通过例如,具有字段名称和字段类型的已知 header 的含义)

核心问题是,在数据实际结束之前,不能保证二进制数据在其体内某处不包含 \a\b 序列。

正确的解决方案是将各个 blob 字段保存在各自单独的物理文件中,并且仅在 .csv 中包含文件名,但在这种情况下这是 Not Acceptable 。

考虑到这些限制,是否有任何适当且安全的解决方案(已经实现或适用)?

最佳答案

如果您需要单个文件中的所有内容,只需使用其中一种方法将二进制编码为可打印 ASCII,并将结果添加到 CSV vfied(让 CSV 模块根据需要添加和转义引号)。

其中一种方法是base64 - 但即使在Python的base64编解码器上,也有更高效的编解码器,例如base85(我猜是在较新的Python,版本3.4及更高版本上)。

因此,Python 2.7 中的示例如下:

import csv, base64

import random
data = b''.join(chr(random.randrange(0,256)) for i in range(50))

writer = csv.writer(open("testfile.csv", "wt"))
writer.writerow(["some text", base64.b64encode(data)])

当然,您还必须在读取文件时进行正确的 Base64 解码 - 但这肯定比尝试创建临时转义方法要好。

关于python - csv 文件中的单独二进制数据(blob),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39253186/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com