diff options
Diffstat (limited to 'Lib/urllib.py')
-rw-r--r-- | Lib/urllib.py | 31 |
1 files changed, 23 insertions, 8 deletions
diff --git a/Lib/urllib.py b/Lib/urllib.py index e2f01c5..74b2aec 100644 --- a/Lib/urllib.py +++ b/Lib/urllib.py @@ -410,7 +410,11 @@ class URLopener: def open_local_file(self, url): """Use local file.""" - import mimetypes, mimetools, email.Utils, StringIO + import mimetypes, mimetools, email.Utils + try: + from cStringIO import StringIO + except ImportError: + from StringIO import StringIO host, file = splithost(url) localname = url2pathname(file) try: @@ -420,7 +424,7 @@ class URLopener: size = stats.st_size modified = email.Utils.formatdate(stats.st_mtime, usegmt=True) mtype = mimetypes.guess_type(url)[0] - headers = mimetools.Message(StringIO.StringIO( + headers = mimetools.Message(StringIO( 'Content-Type: %s\nContent-Length: %d\nLast-modified: %s\n' % (mtype or 'text/plain', size, modified))) if not host: @@ -441,7 +445,11 @@ class URLopener: def open_ftp(self, url): """Use FTP protocol.""" - import mimetypes, mimetools, StringIO + import mimetypes, mimetools + try: + from cStringIO import StringIO + except ImportError: + from StringIO import StringIO host, path = splithost(url) if not host: raise IOError, ('ftp error', 'no host given') host, port = splitport(host) @@ -490,7 +498,7 @@ class URLopener: headers += "Content-Type: %s\n" % mtype if retrlen is not None and retrlen >= 0: headers += "Content-Length: %d\n" % retrlen - headers = mimetools.Message(StringIO.StringIO(headers)) + headers = mimetools.Message(StringIO(headers)) return addinfourl(fp, headers, "ftp:" + url) except ftperrors(), msg: raise IOError, ('ftp error', msg), sys.exc_info()[2] @@ -504,7 +512,11 @@ class URLopener: # mediatype := [ type "/" subtype ] *( ";" parameter ) # data := *urlchar # parameter := attribute "=" value - import StringIO, mimetools + import mimetools + try: + from cStringIO import StringIO + except ImportError: + from StringIO import StringIO try: [type, data] = url.split(',', 1) except ValueError: @@ -530,7 +542,7 @@ class URLopener: msg.append('') msg.append(data) msg = '\n'.join(msg) - f = StringIO.StringIO(msg) + f = StringIO(msg) headers = mimetools.Message(f, 0) f.fileno = None # needed for addinfourl return addinfourl(f, headers, url) @@ -697,8 +709,11 @@ def noheaders(): global _noheaders if _noheaders is None: import mimetools - import StringIO - _noheaders = mimetools.Message(StringIO.StringIO(), 0) + try: + from cStringIO import StringIO + except ImportError: + from StringIO import StringIO + _noheaders = mimetools.Message(StringIO(), 0) _noheaders.fp.close() # Recycle file descriptor return _noheaders |