0

Python コードは、単純なドキュメントの段落 (7 行の "Line 1"、"Line 2" など) を反復処理します。各段落オブジェクトは一意であると期待していますが、実際には重複してい0x25173368ます。何が起こるのですか?それは私の直感に完全に反しています。

コード:

import win32com.client as win32

word = win32.GetObject(Class="Word.Application")
doc = word.Documents.Open("test.docx")

for para in doc.Paragraphs:
  print repr(para)

出力:

<win32com.gen_py.Microsoft Word 12.0 Object Library.Paragraph instance at 0x25173368>
<win32com.gen_py.Microsoft Word 12.0 Object Library.Paragraph instance at 0x25427240>
<win32com.gen_py.Microsoft Word 12.0 Object Library.Paragraph instance at 0x25173368>
<win32com.gen_py.Microsoft Word 12.0 Object Library.Paragraph instance at 0x25427280>
<win32com.gen_py.Microsoft Word 12.0 Object Library.Paragraph instance at 0x25173368>
<win32com.gen_py.Microsoft Word 12.0 Object Library.Paragraph instance at 0x25427320>
<win32com.gen_py.Microsoft Word 12.0 Object Library.Paragraph instance at 0x25173368>
4

1 に答える 1

0

反復処理doc.Paragraphsにより、おそらく基礎となる各 COM オブジェクトに対して動的に Python ラッパー オブジェクトが作成されます。どこにも格納しないためpara、ラッパー オブジェクトはスコープ外になると破棄され、次の反復で同じメモリ アドレスに新しいオブジェクトが作成される可能性があります。

代わりにこれを試して、結果が異なるかどうかを確認してください。

paras = list(doc.Paragraphs)
for para in paras:
    print repr(para)
于 2014-01-22T12:30:03.223 に答える