4
我在添加str
到python中的tar文件時遇到問題。在python 2中,我使用了這樣的方法:如何在Python3中將字符串添加到tarfile中
fname = "archive_name"
params_src = "some arbitrarty string to be added to the archive"
params_sio = io.StringIO(params_src)
archive = tarfile.open(fname+".tgz", "w:gz")
tarinfo = tarfile.TarInfo(name="params")
tarinfo.size = len(params_src)
archive.addfile(tarinfo, params_sio)
它在本質上與here中可以找到的相同。 它運作良好。然而,將蟒蛇3它打破了與下面的錯誤結果:
File "./translate_report.py", line 67, in <module>
main()
File "./translate_report.py", line 48, in main
archive.addfile(tarinfo, params_sio)
File "/usr/lib/python3.2/tarfile.py", line 2111, in addfile
copyfileobj(fileobj, self.fileobj, tarinfo.size)
File "/usr/lib/python3.2/tarfile.py", line 276, in copyfileobj
dst.write(buf)
File "/usr/lib/python3.2/gzip.py", line 317, in write
self.crc = zlib.crc32(data, self.crc) & 0xffffffff
TypeError: 'str' does not support the buffer interface
說實話,我不太懂它來自哪裏,因爲我不喂任何str
到tarfile
模塊回到我做點構造StringIO
對象。 我知道StringIO
和str
,字節等的含義從python 2到3有所改變,但我沒有看到一個錯誤,不能提出更好的邏輯來解決這個任務。
我創建了StringIO
對象,它精確地爲我想要添加到存檔的字符串提供緩衝區方法。但是,有些str
沒有提供它。最重要的是,似乎要對校驗和計算負責的線路引發了異常。
有人可以解釋我小姐的理解,或者至少舉一個例子,說明如何在tar文件中添加一個簡單的str
,而不需要在文件系統上創建一箇中間文件。
看來,我一直在圍繞好灌木叢跳動,但從來沒有得到正確的組合。有用。謝謝。 – luk32