COM(Component Object Model)を使用してWordファイル内のテキストをテキストファイルへ抽出・変換するスクリプト。
ソースコード
# coding: utf-8
import fnmatch, os, sys, win32com.client
if __name__ == '__main__':
wa = win32com.client.gencache.EnsureDispatch("Word.Application")
try:
for path, dirs, files in os.walk(sys.argv[1]): # コマンドラインより探索ディレクトリpathを取得
for filename in files:
if not fnmatch.fnmatch(filename, "*.doc"): continue # wordファイルの拡張子かをパターン・マッチング
doc = os.path.abspath(os.path.join(path, filename)) # wordファイルへの絶対パスを作成
print "processing %s in %s" % (doc, path)
wa.Documents.Open(doc)
txt = doc[:-3] + 'txt' # 変換保管するテキストファイル名
wa.ActiveDocument.SaveAs(txt, FileFormat=win32com.client.constants.wdFormatText)
wa.ActiveDocument.Close()
finally:
wa.Quit() # Wordの終了
実行結果
上記のソースコードをwordtotext.pyで保管し実行。ここでは当方環境でWordファイルが保管されているディレクトリを指定し、実行する。
>python wordtotext.py "C:\Users\yukun\Google Drive\E-mail_Writing_Text" processing C:\Users\yukun\Google Drive\E-mail_Writing_Text\Yukun Homework Package 1.doc in C:\Users\yukun\Google Drive\E-mail_Writing_Text processing C:\Users\yukun\Google Drive\E-mail_Writing_Text\Yukun Homework Package 2.doc in C:\Users\yukun\Google Drive\E-mail_Writing_Text processing C:\Users\yukun\Google Drive\E-mail_Writing_Text\Yukun Homework Package 3.doc in C:\Users\yukun\Google Drive\E-mail_Writing_Text processing C:\Users\yukun\Google Drive\E-mail_Writing_Text\Yukun Homework Package 4.doc in C:\Users\yukun\Google Drive\E-mail_Writing_Text processing C:\Users\yukun\Google Drive\E-mail_Writing_Text\Yukun Homework Package 5.doc in C:\Users\yukun\Google Drive\E-mail_Writing_Text processing C:\Users\yukun\Google Drive\E-mail_Writing_Text\Yukun Homework Package 6.doc in C:\Users\yukun\Google Drive\E-mail_Writing_Text
参考サイト
- fnmatch — Unix ファイル名のパターンマッチ
- 15.1. os — Miscellaneous operating system interfaces — Python v2.7.3 documentation

