我想对LibreOffice Writer文档进行一些非常简单的操作...然后再次将其另存为ODT文件...这可能是什么问题?如果尝试此操作,我会在zip文件(ODT文件)中得到2个content.xmls ...奇怪的是,这两个文件(例如,解压缩为“ content.xml”和“ content_1.xml”)似乎都包含修改后的内容... zipfile = ZipFile( file_path, "a" ) for zip_info in zipfile.infolist(): contents = zipfile.read( zip_info.filename ) if ( zip_info.filename == "content.xml" ): document_root = parseString( contents ) # ... mess around with the contents DOM document... zipfile.writestr( zip_info, document_root.toxml() ) zipfile.close()我知道有各种各样的加载项和可以使用的东西(UNO)...但是我想使其尽可能简单...
2 回答
jeck猫
TA贡献1909条经验 获得超7个赞
发现无法用Python编程地从zip文件中删除元素,我最初决定采用“制作新的zip”方法:使用ZipFile模块从zipfile中删除文件
但是,尽管我能够打开生成的ODT文件并从中提取所有文件,但是7Zip抱怨CRC失败,称content.xml现在“损坏”。显然是由于一个“ content.xml”被另一个的残酷替换所致。
最终答案:1)将修改后的DOM结构输出到同一目录中的一个简单文件,称为“ content.xml”:
f = open( file_dir + '\\content.xml', "w" )
print >>f, document_root.toxml()
f.close()
2)当以编程方式关闭ODT文件时,利用7zip CLI:
import subprocess
subprocess.Popen( "7z u temp.odt content.xml", cwd=file_dir, shell=True )
哈士奇WWW
TA贡献1799条经验 获得超6个赞
根据文档的来源,您可能希望跳过zip文件的混乱,而使用Flat XML OpenDocument Format(我相信它是.fodt扩展名),而直接操作XML。这将意味着更大的文件大小,但它们确实压缩得很好,当您弄乱它们时,始终可以将它们另存为.odt文件。
添加回答
举报
0/150
提交
取消