url.py 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. import os
  2. try:
  3. from urllib.request import urlopen as _urlopen
  4. except ImportError:
  5. from urllib2 import urlopen as _urlopen
  6. try:
  7. from urllib.request import urlretrieve as _urlretrieve
  8. except ImportError:
  9. import urllib2
  10. _urlretrieve = None
  11. from .log import debug
  12. __all__ = ['urlopen', 'urlretrieve']
  13. def urlopen(url, *args, **kwargs):
  14. '''Open a remote file
  15. '''
  16. baseurl, urlname = os.path.split(url)
  17. debug('DOWNLOAD', '%s from %s', baseurl, urlname)
  18. return _urlopen(url, *args, **kwargs)
  19. def urlretrieve(url, filename=None):
  20. '''Download a file to disk
  21. '''
  22. if filename is None:
  23. filename = os.path.basename(url)
  24. debug('DOWNLOAD', '%s from %s', filename, os.path.dirname(url))
  25. else:
  26. debug('DOWNLOAD', '%s as %s', url, filename)
  27. parent_directory = os.path.dirname(filename)
  28. if parent_directory and not os.path.exists(parent_directory):
  29. os.makedirs(parent_directory)
  30. if _urlretrieve is None:
  31. data = urllib2.urlopen(url).read()
  32. with open(filename, 'w') as f:
  33. f.write(data)
  34. else:
  35. _urlretrieve(url, filename)