MCPcopy Create free account
hub / github.com/RT-Thread/env-windows / seek

Method seek

tools/python-3.11.9-amd64/Lib/zipfile.py:1086–1134  ·  view source on GitHub ↗
(self, offset, whence=0)

Source from the content-addressed store, hash-verified

1084 return self._seekable
1085
1086 def seek(self, offset, whence=0):
1087 if self.closed:
1088 raise ValueError("seek on closed file.")
1089 if not self._seekable:
1090 raise io.UnsupportedOperation("underlying stream is not seekable")
1091 curr_pos = self.tell()
1092 if whence == 0: # Seek from start of file
1093 new_pos = offset
1094 elif whence == 1: # Seek from current position
1095 new_pos = curr_pos + offset
1096 elif whence == 2: # Seek from EOF
1097 new_pos = self._orig_file_size + offset
1098 else:
1099 raise ValueError("whence must be os.SEEK_SET (0), "
1100 "os.SEEK_CUR (1), or os.SEEK_END (2)")
1101
1102 if new_pos > self._orig_file_size:
1103 new_pos = self._orig_file_size
1104
1105 if new_pos < 0:
1106 new_pos = 0
1107
1108 read_offset = new_pos - curr_pos
1109 buff_offset = read_offset + self._offset
1110
1111 if buff_offset >= 0 and buff_offset < len(self._readbuffer):
1112 # Just move the _offset index if the new position is in the _readbuffer
1113 self._offset = buff_offset
1114 read_offset = 0
1115 elif read_offset < 0:
1116 # Position is before the current position. Reset the ZipExtFile
1117 self._fileobj.seek(self._orig_compress_start)
1118 self._running_crc = self._orig_start_crc
1119 self._compress_left = self._orig_compress_size
1120 self._left = self._orig_file_size
1121 self._readbuffer = b''
1122 self._offset = 0
1123 self._decompressor = _get_decompressor(self._compress_type)
1124 self._eof = False
1125 read_offset = new_pos
1126 if self._decrypter is not None:
1127 self._init_decrypter()
1128
1129 while read_offset > 0:
1130 read_len = min(self.MAX_SEEK_READ, read_offset)
1131 self.read(read_len)
1132 read_offset -= read_len
1133
1134 return self.tell()
1135
1136 def tell(self):
1137 if self.closed:

Callers 9

_EndRecData64Function · 0.45
_EndRecDataFunction · 0.45
seekMethod · 0.45
readMethod · 0.45
closeMethod · 0.45
__init__Method · 0.45
_open_to_writeMethod · 0.45
mkdirMethod · 0.45
closeMethod · 0.45

Calls 5

tellMethod · 0.95
_init_decrypterMethod · 0.95
readMethod · 0.95
_get_decompressorFunction · 0.85
minFunction · 0.85

Tested by

no test coverage detected