2014-01-22 16 views
0

파이썬 코드는 간단한 문서 (7 줄 "줄 1", "줄 2"등)의 단락을 반복합니다. 나는 각 단락 객체가 유일 할 것이라고 기대하지만 실제로는 중복이 발생한다.이 경우에는 0x25173368이다. 무슨 일이야? 그것은 내 직감에 완전히 위배됩니다.python win32com, 개체가 자동으로 다시 사용됩니까?

코드 :

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) 

출력 : 아마 동적으로 각 기본 COM 개체에 대한 파이썬 래퍼 객체를 생성

<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> 

답변

0

반복 doc.Paragraphs 이상. para을 저장하지 않으므로 범위를 벗어나면 래퍼 객체가 삭제되고 다음 반복은 동일한 메모리 주소에 새 객체를 만들 수 있습니다. 결과가 다른 경우

대신을 시도하고 참조 :

paras = list(doc.Paragraphs) 
for para in paras: 
    print repr(para)