Форум сайта python.su
Ссылку посмотрел - думаю, что док конвертер можно сделать совсем по-другому.
Офлайн
Появилось свободное время - подправил doc. Сначала хотел сделать по документации, но, как я понимаю, в секции fcPlcftxbxTxt по адресу 0x025A должно быть указание на расположение таблицы, в которой перечислены начальные байты блоков текста. В имеющихся у меня файлах в этом месте либо нули, либо ff. Здесь и остановился.
В общем переписал по-другому. Хочется узнать, как избавиться от global и буду рад, если кто-нибудь в свободное время на этом конкретном примере объяснит, как переписать, используя классы.
P.S.: Для меня идея актуальна, использую на книжке NST. Компьютер не всегда под рукой, а CoolReader .docx не читает. Поэтому, например когда скачаю из интернета такой документ, похожим скриптом в одно нажатие конвертирую в текст - дальше можно читать без проблем
Прикреплённый файлы:
pyall2txt.py (5,3 KБ)
Офлайн
И ради любопытства хотелось бы знать: почему, когда обрабатываю к-н док
doc_name[1] is '.doc' -> False doc_name[1] == '.doc' -> True ? type(doc_name[1]) -> 'str'
'str' is 'str' -> True
Офлайн
>>> 2 == 2. True >>> 2 is 2. False >>>
Офлайн
Перечитал про ==, is, разницу прояснил.
Будут лучшие времена, разберусь, как классы использовать, обновлю.
Всем, кто проявил участие и терпение - спасибо.
Офлайн
class Converter: def doc_txt(self, ifname, ofname): pass def docx_txt(self, ifname, ofname): pass def odt_txt(self, ifname, ofname): pass def fb2_txt(self, ifname, ofname): pass def convert(ifname, iftype, ofname, oftype): con = Converter() if iftype == 'doc': con.doc_txt(ifname, ofname) elif iftype == 'docx': con.docx_txt(ifname, ofname) elif iftype == 'odt': con.odt_txt(ifname, ofname) elif iftype in ('fb2', 'html'): con.fb2_txt(ifname, ofname) def main(): convert('file.doc', 'doc', 'file.txt', 'txt') if __name__ == '__main__': main()
Отредактировано py.user.next (Май 28, 2014 00:49:39)
Офлайн
v 0.3
Прикреплённый файлы:
pyall2txt.py (5,1 KБ)
Офлайн
Да вы проект заведите, а тут уведомляйте о новых версиях. См. например github или bitbucket.
Офлайн
doza_andДля начала курс пройти по системам контроля версий. По git'у ;)
См. например github или bitbucket.
evgen34Вот вывод (вызовы ok(), help()) не должен находиться в исполнителе (Converter), так как вывод может не требоваться (пользователя может вообще не быть).
v 0.3
Офлайн
Да ну, что Вы, это же несерьёзная программка. Больше для обучения.
Сейчас 128-я строчка выглядит так:
MyHTMLParser.text += data
self.text += data
Офлайн