def __init__(self, name, mode='r'): IOBase.__init__(self) self._name = fsdecode(name) self._mode = mode # Thread safe stream position self._seek = 0 self._seek_lock = Lock() # Cache for values self._cache = {} # Set to True once file is closed self._closed = False # Select supported features based on mode self._writable = False self._readable = False self._seekable = True if 'w' in mode or 'a' in mode or 'x' in mode: self._writable = True elif 'r' in mode: self._readable = True else: raise ValueError('Invalid mode "%s"' % mode)
def __init__(self, name, mode="r"): IOBase.__init__(self) self._name = fsdecode(name) self._mode = mode self._seek = 0 self._seek_lock = Lock() self._cache = {} self._closed = False self._writable = False self._readable = False self._seekable = True if "w" in mode or "a" in mode or "x" in mode: self._writable = True elif "r" in mode: self._readable = True else: raise ValueError(f'Invalid mode "{mode}"')
def __init__(self, url, name=None, requests_session=None, timeout=30): IOBase.__init__(self) self.url = url self.sess = requests_session if requests_session is not None else requests.session( ) self._seekable = False self.timeout = timeout f = self.sess.head(url, headers={'Range': 'bytes=0-'}, timeout=timeout) if f.status_code == 206 and 'Content-Range' in f.headers: self._seekable = True self.len = int(f.headers["Content-Length"]) if name is None: if "Content-Disposition" in f.headers: value, params = cgi.parse_header( f.headers["Content-Disposition"]) if "filename" in params: self.name = params["filename"] else: self.name = name f.close() self._pos = 0 self._r = None