2010-01-27 23 views
6

Tôi cần tải xuống tệp trên trang web Sharepoint của công ty bằng CPython. Codebase hiện tại ngăn cản tôi sử dụng Ironpython mà không cần chuyển mã, do đó thư viện WebClient của .NET đã hết. Tôi cũng muốn tải xuống tệp mà không nhắc người dùng lưu và không nhắc người dùng nhập bằng chứng xác thực mạng. Tôi cố gắng thư viện khác, nhưng tất cả họ đều có ngắn comings:Tải xuống tệp được bảo vệ bởi NTLM/SSPI mà không cần nhắc đến thông tin đăng nhập bằng Python trên Win32?

  • urllib2 cộng python-ntlm: yêu cầu user/pass để được cung cấp
  • COM tự động hóa của Internet Explorer: yêu cầu người dùng nhấp vào 'Lưu'
  • subprocess sử dụng wget hay cURL: không thể có được một trong hai để xác thực mà không đòi hỏi user/pass

tôi không thể tìm thấy bất cứ điều gì trong pywin32 trông li ke nó móc vào urllib2 hoặc cung cấp chức năng tương đương. Vì vậy, có cách nào để tải xuống tệp mà không yêu cầu bằng chứng xác thực và không nhắc người dùng nhấp vào 'Lưu' không?

Trả lời

4

Tôi đã kết thúc tìm kiếm some VB code from a Microsoft support page sử dụng chức năng từ urlmon.dll Tôi đã sao chép nó bằng một dòng mã ctypes và nó hoàn thành chính xác những gì tôi cần.

ctypes.windll.urlmon.URLDownloadToFileA(0,url,local_file_name,0,0) 
  • url là vị trí của tài nguyên (trong trường hợp này, một tập tin Excel trên một trang web Sharepoint)
  • local_file_name là con đường địa phương và tên của tập tin để được cứu độ.

Thông tin đăng nhập này qua dây không có lời nhắc.

Các vấn đề liên quan