【发布时间】:2011-10-03 21:18:41
【问题描述】:
一个相对 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 的标准。 - 或者 -
问题是数据没有被再次压缩,因此它的体积很大吗?
【问题讨论】:
-
docs.python.org/library/zipfile.html#zipfile.ZipFile.write 有什么问题??看起来很清楚。
-
@S.Lott:
ZipFile.write将文件名作为其第一个参数。 OP 将数据保存在内存中而不是文件中。 -
docs.python.org/library/zipfile.html#zipfile.ZipFile.writestr 可能是更好的选择。但是,我仍然不清楚可用文档中有哪些令人困惑或不完整的地方。很难猜出问题出在哪里。
标签: python zipfile stringio plpython