2

一个相对 Python 的菜鸟,我已经成功地从一个 zip 存档中提取了一个文本文件,它包含在 PostgreSQL bytea 字段中,使用以下代码:

myzip = ZipFile(StringIO(rv[0]["archivefield"]), 'a')
data = myzip.read("content.txt",'a')

# *** WORK ON content.txt HAPPENS HERE ***

然后我已经完成了该文本文件所需的工作......到目前为止,一切都很好!

但是,现在,将 content.txt 压缩回存档中的正确位置,然后写回“archivefield”的语法有点困惑。

你们这里的任何专家都可以建议我需要的一点语法吗?差不多好了!

好吧,多亏了这里收到的帮助——我们现在肯定会回信给“档案区”——这太棒了!

现在的问题是:

1)我显然将原始字段的大小增加了一倍。这是“附加”模式的功能吗?如何“回到零并重写该字段?- 和/或 -

2)我写回的数据不会编码回十六进制(?)模式,因为原始数据似乎是 - 并且将是 PostgreSQL v9 的标准。- 或者 -

问题是数据没有被再次压缩,因此它的大小很大吗?

4

1 回答 1

0

使用ZipFile.writestr

strf = StringIO(rv[0]["archivefield"])
zipf = ZipFile(strf, "a")
data = myzip.read("content.txt"')

# process data, changing its value

zipf.writestr("content.txt", data)
zipf.close()  # actually write contents out

然后写str.getvalue()回您的 PostgreSQL 数据库,覆盖rv[0]["archivefield"]. 恐怕我帮不了你。

于 2011-07-12T18:58:24.573 回答