Я разархивировал файл pptx в структуру папок xml файлов, переименовав его в .zip. Затем я отредактировал некоторые данные (без структурных изменений, только некоторые незначительные изменения данных и некоторые изменения данных диаграмм / таблиц). Затем, когда я повторно заархивировал файл и переименовал его в .pptx, он сказал, что файл был поврежден. Я использую linux и редактирую файлы с помощью:
- xml файлов: from l xml import etree as ET
- xlsx: import openpyxl
Любая помощь будет оценена. Заранее благодарим.
Изменить: найдите фрагменты кода ниже Фрагмент 1 Фрагмент 2
Редактировать 2: Даже если я ничего не меняю в файл, просто откройте его, прочтите и распечатайте материал, тогда я также не могу преобразовать его обратно в pptx
Изменить 3: def getStringFromFile (filename):
wordsFromTheFIle = []
tree = ET.parse(filename)
root = tree.getroot()
ns = {'a': 'http://schemas.openxmlformats.org/drawingml/2006/main',
'r': 'http://schemas.openxmlformats.org/officeDocument/2006/relationships',
'p': 'http://schemas.openxmlformats.org/presentationml/2006/main'}
subroot= root.find('p:cSld', ns)
sptree = subroot.find('p:spTree', ns)
for sp in sptree.findall('p:sp', ns):
txBody = sp.find('p:txBody', ns)
for p in txBody.findall('a:p', ns):
for r in p.findall('a:r',ns):
for t in r.findall('a:t',ns):
word = t.text
if(word!=None):
wordsFromTheFIle.append(word)
print(wordsFromTheFIle)
И прочитать файлы в этом формате:
filenames = glob("Path to files")
for filename in filenames:
print(filename)
getStringFromFile(filename)
Редактировать 4:
with zipfile.ZipFile("/path-to-pptx/_MyPresentation.pptx", 'r') as zip_ref:
zip_ref.extractall("path-to-extract-folder")
zip_ref.close()
zip_file = zipfile.ZipFile('another.pptx', 'w')
zip_file.write('_MyPresentation')
zip_file.close()
Даже это похоже на повреждение файлов на моей машине