您的位置:首页 > 编程语言 > Python开发

懒人的Python技巧#20060706

2006-07-07 19:32 357 查看
很多工作经常是在同时打开了N个窗口,搞不好还开着Photoshop和/或Illustrator的情况下进行。如此负荷,再快的电脑也照给“沙漏”。然而即使是在这样的情形之下,还经常会遇到“希望把Word文档转为文本文件”的需求——这大约是Word的滥用和优秀文本实用工具的不普及导致的恶果。

没有办法,如此一来我经常不得不做出这样的麻烦事情:

[“麻烦得要死”版操作指南]

步骤1:左手按“Windows键+E”打开文件管理器;

步骤2:右手用鼠标浏览文件夹找到要打开的Word文档;

步骤3:双击打开文档;

步骤4:按F12或“Alt + F 接 O”,打开“另存为”菜单;

步骤5:从下拉框选择TXT格式进行保存。

不堪其扰!

联想起以前用过的一些音频格式转换工具,只需要将要转换的文件拖拽到工具的图标上就自动搞定,且不说免去了打开软件的繁复,也不必去应对各种对话框和选择。要是Word转换TXT能有如此方便该多好!

偶然在 Python Cookbook 2/e 上面看到了
Recipe 2.27. Extracting Text from Microsoft Word Documents
颇为所动,于是花了一小会儿功夫写下一段Python程序和一个批处理,然后我把批处理文件的快捷方式拿到了桌面上,于是Word转TXT这件事情就变成了:

[简化了的操作指南]

步骤1:按“Windows + E”打开文件管理器;

步骤2:右手用鼠标浏览文件夹找到要打开的Word文档;

步骤3:拖拽Word文档到批处理快捷方式上,直接在源目录得到相应的TXT。

代码写得难看,不过管用才是我更需要的。



---- DocToText.py ---- BEGIN ----

import fnmatch, os, sys, win32com.client

wordapp = win32com.client.gencache.EnsureDispatch("Word.Application")

try:
file_path = sys.argv[1]
# 取得文件名
file_path_list = file_path.split('//')
file_name = file_path_list[len(file_path_list) - 1]
# 取得文件所在的路径
path_name = file_path[:file_path.index(file_name)]
# 必须是 .doc 文件
if not fnmatch.fnmatch(file_name, '*.doc') :
print "ERROR: The file you specified MUST be a DOC file./n"
else :
hasFile = False
# 检查指定的路径下是否确实存在指定的文件
for filename in os.listdir(path_name) :
if filename == file_name :
hasFile = True
break
if hasFile :
doc = file_path
print "processing %s" % doc
wordapp.Documents.Open(doc)
docastxt = doc[:-3] + 'txt'
wordapp.ActiveDocument.SaveAs(docastxt,
FileFormat=win32com.client.constants.wdFormatText)
wordapp.ActiveDocument.Close( )
else :
print "ERROR: /"" + sys.argv[1] + "/" does not exist./n"
finally:
# 保证Word被关闭
# TODO: 在已经有Word文档被打开时会遇到一个退出保存的提问
wordapp.Quit( )

---- DocToText.py ---- E N D ----



---- DocToTextBatch.bat ---- BEGIN ----

REM 以批处理接收到的参数调用python程序
python e:/code/DocToText/DocToText.py %1

---- DocToTextBatch.bat ---- E N D ----
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: