Заменить текст в файле .doc на библиотеку питона olefile - PullRequest
0 голосов
/ 29 марта 2019

Я использую библиотеку python olefile для изменения файлов .xls и .doc. Интересный факт: приведенный ниже код работает для файлов .xls, но не для файлов .doc.

Каким-то образом .doc кодирует / обрабатывает свое содержимое по-разному. В .xls при печати raw_content я вижу много странных байтов, но также и полные слова.

В файле .doc я вижу еще много \x00, и полные слова похожи на \x00 между каждым символом.

Также странно, olefile docs предлагают сделать это так, даже говоря о слове, в связанном примере.

file = open('my.doc', 'rb')
ole = olefile.OleFileIO(file.read())
raw_content = ole.openstream('WordDocument').read()
raw_content= raw_content.replace(
    b'a-placeholder',
    bytes(dynamic_value, 'utf-8')  # made sure they are the same length!
)
# this works!
# raw_content= raw_content.replace(
#     b'a',
#     b'Z'
# )
ole.write_stream('WordDocument', raw_content)
ole.fp.seek(0)
file_contents = ole.fp.read()
# further processing...
...