2

Pythonに比較的慣れていないので、次のコードを使用して、PostgreSQLのbyteaフィールドに含まれているテキストファイルをzipアーカイブから正常に取得しました。

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

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

次に、そのテキストファイルで必要な作業を行いました...これまでのところ、とても良いです!

ただし、content.txtをアーカイブ内の正しい場所に圧縮して戻し、「archivefield」に書き戻すための構文が少し混乱しています。

ここにいる専門家の誰かが、私が必要とする構文を少し提案できますか?もうすぐです!

さて、ここで受け取った助けのおかげで-私たちは今確かに「archivefield」に書き戻しています-これは素晴らしいです!

現在の問題は次のとおりです。

1)元のフィールドのサイズを2倍にしているようです。これは「追加」モードの機能ですか?'ゼロに巻き戻してフィールドを書き換える方法は?-および/または-

2)書き戻しているデータは、元のデータが-PostgreSQLのv9の標準であるように見えたため、hex(?)モードにエンコードされません。- また -

データが再度圧縮されていないため、サイズが大きいという問題はありますか?

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 に答える