Reputation: 3002
I need to download a file on a corporate Sharepoint site using CPython. Existing codebase prevents me from using Ironpython without porting the code, so .NET's WebClient
library is out. I also want to download the file without prompting the user to save and without prompting the user for network credentials. I tried other libraries, but they all had short-comings:
urllib2
plus python-ntlm
: requires user/pass to be providedsubprocess
using wget
or cURL
: couldn't get either to authenticate without requesting user/passI couldn't find anything in pywin32
that looks like it hooks into urllib2 or provides equivalent functionality. So, is there a way to download the file without requesting credentials and without prompting the user to click 'Save'?
Upvotes: 6
Views: 841
Reputation: 3002
I ended up finding some VB code from a Microsoft support page that uses a function from urlmon.dll
I replicated it with a single line of ctypes
code and it accomplished exactly what I needed it to do.
ctypes.windll.urlmon.URLDownloadToFileA(0,url,local_file_name,0,0)
url
is the location of the resource (in this case, an Excel file on a Sharepoint site)local_file_name
is the local path and name of the file to be saved.This passed credentials across the wire with no prompts.
Upvotes: 4