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