如何使用Python将.CHM帮助文件存储为文本?

2024-05-16 23:28:05 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在使用Pastebin存储python程序的代码,以使其在多台计算机上保持更新。我现在正在尝试类似地维护一个更新的帮助窗口。我看到我可以使用.chm文件在一个文件中保存完整的帮助对话框,但是这些文件不能很好地转换为文本。在

我使用了来自Microsoft的示例.chm文件,我打开了该文件(“视图hlp.chm)并将文本复制到Pastebin,然后使用下面的脚本尝试重新创建.chm文件。这不起作用。当直接打开时,它会发出“cannot open the file”(无法打开文件)的消息,并在PyWin32中被忽略。 我可以用python加载帮助对话框的另一种文件格式吗?在

import urllib2, sys

helpUrl = "http://pastebin.com/raw.php?i=a8rF2i8a"
originalPath = "Viewhlp.chm"
newPath = "NewHlp.chm"

try:
    helpData = urllib2.urlopen(helpUrl)
except urllib2.URLError:
    sys.exit()

currentHelp = helpData.read()
with open(newPath, mode="wb") as helpFile:
    helpFile.write(currentHelp)

# briefly display using PyWin32 or just open the chm files directly
import win32help
win32help.HtmlHelp(0, None, win32help.HH_INITIALIZE, None)
link = win32help.HH_AKLINK()
link.indexOnFail = 1
link.url = ""
link.msgText = ""
link.msgTitle = ""
link.window = ""
win32help.HtmlHelp(0, originalPath, win32help.HH_KEYWORD_LOOKUP, link)
win32help.HtmlHelp(0, newPath, win32help.HH_KEYWORD_LOOKUP, link)

Tags: 文件the文本importhhlinkopenurllib2
2条回答

像这样转换东西/文档的一种方法是在Windows系统上安装一台“通用/纯文本”打印机,然后选择它,在打印对话框中选择“打印到文件”选项,当我试图从相关应用程序中打印内容时会出现该对话框。在

这将产生一个纯文本文件,其中包含了将要打印的内容。虽然我从未尝试过,但可能有某种方法可以让它自动化。在

记事本无法正确显示非打印字符。最简单的方法可能是对.chm进行base64编码,然后在将其复制到pastebin之前在记事本中打开编码版本。然后在阅读时取消编码:

currentHelp = base64.b64decode(helpData.read())

相关问题 更多 >