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

懒人的Python技巧#20060706

2008-04-08 23:14 204 查看
很多工作经常是在同时打开了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 ----
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: