2016-06-23 45 views
0

Ich möchte Dateiübertragung Fortschrittsinformationen während des Hochladens von Dateien auf WebDAV-Server erhalten. Ich versuche zu Withevents für Set-Handler für Session-Objekt verwenden, aber es wird mit Fehler:WinSCP-Session-Event-Handler über die COM-Schnittstelle mit pywin32

C:\Miniconda3\python.exe E:/backup_1c/winscp.py 
Traceback (most recent call last): 
    File "E:/backup_1c/winscp.py", line 16, in <module> 
    wcpSession.open(winscp_session_option) 
    File "<COMObject WinSCP.Session>", line 2, in open 
pywintypes.com_error: (-2147352567, 'Error.', (0, 'mscorlib', 'Member group not found. (Exception HRESULT: 0x80020003 (DISP_E_MEMBERNOTFOUND))', None, 0, -2147352573), None) 

Process finished with exit code 1 

Script-Code ist:

# -*- coding: utf-8 
import win32com.client as win32 

class WinScp_ISessionEvents: 
    def OnFileTransferProgress(self, e): 
     print(e.FileProgress) 

if __name__ == "__main__": 
    wcpSession = win32.dynamic.Dispatch('WinSCP.Session') 
    winscp_session_option = win32.dynamic.Dispatch('WinSCP.SessionOptions') 
    winscp_session_option.Protocol = 3 
    winscp_session_option.HostName = "webdav.yandex.ru/" 
    winscp_session_option.UserName = "user" 
    winscp_session_option.Password = "password" 
    win32.WithEvents(wcpSession, WinScp_ISessionEvents) 
    wcpSession.open(winscp_session_option) 
    wcpSession.PutFiles('E:\Exchange\File.xls', '/File.xls') 

Laut Fehlermeldung I in WinScp_ISessionEvents Klasse falsch Funktionsnamen haben, ich habe versuchte verschiedene Namen wie FileTransferProgress, Session_FileTransferProgress, wcpSession_FileTransferProgress, wcpSession_OnFileTransferProgress und viele andere.

Antwort

0

Der Callstack zeigt ein Problem bei der wcpSession.open, nicht die win32.WithEvents.

Ist nicht das Problem, dass die Methode .Open ist, nicht .open?

+0

Ich habe nur Open und Open-Methoden verwenden, aber nichts ändert sich. Wenn ich Zeichenfolge win32.WithEvents (wcpSession, WinScp_ISessionEvents) kommentieren, dann funktioniert das Skript korrekt und endet mit dem Beendigungscode 0. – user2355826