Вот было у Вас такое, что на вход реализованному на Python автоматизированному процессу, принципиально не использующему приложение Microsoft Word и COM-объекты, нет-нет да и придет файл с расширением docm? Ведь фактически, чтобы обращаться к текстовым файлам, на текущий момент в экосистеме Python существует только одна более-менее функциональная (и, что греха таить, бесплатная) библиотека – python-docx. А она позволяет работать только с docx-файлами. Можно, конечно, задействовать Word и выполнить преобразование путем пересохранения, но мы же помним – принципы (прошу не считать это глупостью, просто если можно работать с файлами напрямую – лучше так и делать). Можно взять другое приложение, взаимодействуя с ним посредством GUI через использование pywinauto и pyautogui, но здесь получается все не всегда просто и не быстро: заменили приложение, у приложения изменился интерфейс – начинай сначала…
Заказчику, меж тем, нет дела до наших трудностей: его файл(ы) автоматизированный процесс должен уметь обрабатывать. К счастью, doc-файлы уже не в ходу, иначе бы дальше говорить было не о чем.
Так вот, памятуя о том, что и формат docx, и формат docm – суть архивы xml-файлов (да, там есть еще некие .rels, но внутри они – те же xml’ки), мы задались вопросом: а что если преобразование одного формата в другой реализовать на файловом уровне? Вот прям забраться внутрь и внести необходимые изменения?
Сказано – сделано! Вот скрипт: