2010-01-27 8 views
6

Necesito descargar un archivo en un sitio de Sharepoint corporativo usando CPython. La base de código existente me impide usar Ironpython sin portar el código, por lo que la biblioteca WebClient de .NET está fuera. También quiero descargar el archivo sin pedirle al usuario que lo guarde y sin solicitarle al usuario las credenciales de la red. He intentado otras bibliotecas, pero todos tenían corto idas:Descargar un archivo protegido por NTLM/SSPI sin solicitar credenciales con Python en Win32?

  • urllib2 más python-ntlm: Requiere/pasar a ser proporcionado
  • automatización COM de Internet Explorer usuario: requiere que el usuario haga clic en 'Guardar'
  • subprocess usando wget o cURL: no se pudo obtener ya sea para autenticar sin solicitar usuario/

no pude encontrar nada en pywin32 que se ve li ke se engancha en urllib2 o proporciona una funcionalidad equivalente. Entonces, ¿hay alguna manera de descargar el archivo sin solicitar credenciales y sin pedirle al usuario que haga clic en 'Guardar'?

Respuesta

4

Terminé encontrando some VB code from a Microsoft support page que usa una función de urlmon.dll Lo repliqué con una sola línea de código ctypes y logró exactamente lo que necesitaba.

ctypes.windll.urlmon.URLDownloadToFileA(0,url,local_file_name,0,0) 
  • url es la ubicación del recurso (en este caso, un archivo de Excel en un sitio de SharePoint)
  • local_file_name es la ruta de acceso local y el nombre del archivo a guardar.

Esto pasó las credenciales a través del cable sin indicaciones.

Cuestiones relacionadas