2014-03-14 2 views
7

임은 이메일을 읽고 파이썬에서 win32com 모듈을 사용하여 내 자신의 폴더에 첨부 파일을 다운로드하려고, 나는 첨부 객체 점점에서 중지 ... 마지막 4 개 라인 작업의win32com.client를 Python에서 사용하여 Outlook에서 첨부 파일을 저장하는 방법은 무엇입니까?

from win32com.client import Dispatch 
import datetime as date 

outlook = Dispatch("Outlook.Application").GetNamespace("MAPI") 
inbox = outlook.GetDefaultFolder("6") 
all_inbox = inbox.Items 
val_date = date.date.today() 

sub_today = 'Hi' 
att_today = 'Attachment.xlsx' 
for msg in all_inbox: 
    if msg.Subject == sub_today: 
     break 

for att in msg.Attachments: 
    if att.FileName == att_today: 
     break 

att.SaveAsFile('new.xlsx') 
att.ExtractFile('new.xlsx') 
open(att)  
att.WriteToFile('x') 

없음을

>>> att.ExtractFile('new.xlsx') 
raise AttributeError("%s.%s" % (self._username_, attr)) 
AttributeError: <unknown>.ExtractFile 

>>> open(att) 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
TypeError: coercing to Unicode: need string or buffer, instance found 

>>> att.WriteToFile('x') 
raise AttributeError("%s.%s" % (self._username_, attr)) 
AttributeError: <unknown>.WriteToFile 

att.SaveAsFile('new.xlsx')에는 오류가 없지만 작업 디렉토리에는 그러한 파일이 없습니다. 그 선은 무시당한 것 같습니다 ...

아무도 도와 줄 수 있습니까? 미리 감사드립니다!

+0

아마도 지금까지 답변을 수락 할 수 있습니다. :) –

답변

2

여기서 으로 생각하십니까? 현재 작업 디렉토리는? 나는 잘못된 폴더를보고 있다고 말하고 싶지만, 일반적으로 SaveAsFile은 잘 작동합니다.

SaveAsFile의 전체 경로를 전달하면 문제가 해결됩니다.

+0

감사합니다. 마지막으로 dir과 파일 이름을 모두 발표하여 해결했습니다. att.SaveAsFile (os.getcwd() + '\\ new.xlsx') – lsheng

8

그냥 업데이트, 나는 디렉토리와 파일 이름 자체 SaveAsFile 모두를 주장하여이 문제를 해결 한 :

그것은 대부분의 스레드처럼 당신 만 넣어야한다는 여기서 본 적이되지
att.SaveAsFile(os.getcwd() + '\\new.xlsx') 

그것에있는 경로. 사실 경로와 파일 이름이 모두 필요합니다.

파이썬이 현재 실행중인 디렉토리를 인식하지 못하기 때문에 이상하게도 os.getcwd()를 넣어야합니다. R에서는 getwd()로 작업 디렉토리를 설정 한 후 다음과 같은 파일에 쓸 수 있습니다. 이 위치.

건배,

+1

"전체 경로"라는 용어는 매우 일반적인 용도로 "전체 파일 이름을 포함한 경로 지정 ". 당신이 본 스레드가 정확했을 수도 있습니다. :-) –