0

Word 文書からデータを抽出して処理する小さなプログラムを作成しました。このツールは Windows (XP) でのみ実行され、PyWin32 ライブラリを使用します。

すべてが機能しますが、ユーザーにとって非常に迷惑な次の問題が発生することがあります。

1) このコードで Word を非表示にしますが、それでも Word が開き、すべてのドキュメントが開くことがあります。これは非常に信頼性が低く、なぜこれが起こるのかわかりません。誰かが同じ問題に気づいていますか?

word = win32.gencache.EnsureDispatch('Word.Application')
word.Visible = False

2) プログラムが数百のドキュメントで数回使用された後、十分な RAM がないためにプログラムがクラッシュします。この問題をどのように処理できるか、誰か提案がありますか?

編集:次のようにファイルをロードしています:

def convert_word_to_text(path, id):
"""Converts the word documents in text format."""

    word.Documents.Open(path)
    doc = word.ActiveDocument
    table = doc.Tables(1)
    # Process the data

for file in files:
    convert_word_to_text(file, id)

どんな助けでも大歓迎です!ステファニー

4

2 に答える 2

2

ドキュメントを開いたので:

word.Documents.Open(path)
doc

また、それを閉じる必要があります。このようなもの:

doc.close()

関数の最後にconvert_word_to_text役立つ場合があります。

于 2013-06-08T09:35:07.643 に答える
1

(2) については、多数のファイルをメモリにロードしてから処理していると思います。代わりに、ジェネレーターまたは for ループを使用し、各ファイルを個別にロードし、テキストなどを抽出してから、次のファイルに移動する必要があります。この種の問題は、外部の XML またはバイナリっぽいファイル (たとえば、 を含む画像、を含むPILExcel ファイルopenpyxlなど) を読み込むときによく発生するようです。

于 2013-06-08T09:15:12.877 に答える