Psyduck - 可達鴨 之 鴨力山大2


Server : LiteSpeed
System : Linux premium217.web-hosting.com 4.18.0-553.54.1.lve.el8.x86_64 #1 SMP Wed Jun 4 13:01:13 UTC 2025 x86_64
User : alloknri ( 880)
PHP Version : 8.1.34
Disable Function : NONE
Directory :  /opt/alt/python35/lib64/python3.5/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Current File : //opt/alt/python35/lib64/python3.5/chunk.py
"""Simple class to read IFF chunks.

An IFF chunk (used in formats such as AIFF, TIFF, RMFF (RealMedia File
Format)) has the following structure:

+----------------+
| ID (4 bytes)   |
+----------------+
| size (4 bytes) |
+----------------+
| data           |
| ...            |
+----------------+

The ID is a 4-byte string which identifies the type of chunk.

The size field (a 32-bit value, encoded using big-endian byte order)
gives the size of the whole chunk, including the 8-byte header.

Usually an IFF-type file consists of one or more chunks.  The proposed
usage of the Chunk class defined here is to instantiate an instance at
the start of each chunk and read from the instance until it reaches
the end, after which a new instance can be instantiated.  At the end
of the file, creating a new instance will fail with an EOFError
exception.

Usage:
while True:
    try:
        chunk = Chunk(file)
    except EOFError:
        break
    chunktype = chunk.getname()
    while True:
        data = chunk.read(nbytes)
        if not data:
            pass
        # do something with data

The interface is file-like.  The implemented methods are:
read, close, seek, tell, isatty.
Extra methods are: skip() (called by close, skips to the end of the chunk),
getname() (returns the name (ID) of the chunk)

The __init__ method has one required argument, a file-like object
(including a chunk instance), and one optional argument, a flag which
specifies whether or not chunks are aligned on 2-byte boundaries.  The
default is 1, i.e. aligned.
"""

class Chunk:
    def __init__(self, file, align=True, bigendian=True, inclheader=False):
        import struct
        self.closed = False
        self.align = align      # whether to align to word (2-byte) boundaries
        if bigendian:
            strflag = '>'
        else:
            strflag = '<'
        self.file = file
        self.chunkname = file.read(4)
        if len(self.chunkname) < 4:
            raise EOFError
        try:
            self.chunksize = struct.unpack_from(strflag+'L', file.read(4))[0]
        except struct.error:
            raise EOFError
        if inclheader:
            self.chunksize = self.chunksize - 8 # subtract header
        self.size_read = 0
        try:
            self.offset = self.file.tell()
        except (AttributeError, OSError):
            self.seekable = False
        else:
            self.seekable = True

    def getname(self):
        """Return the name (ID) of the current chunk."""
        return self.chunkname

    def getsize(self):
        """Return the size of the current chunk."""
        return self.chunksize

    def close(self):
        if not self.closed:
            try:
                self.skip()
            finally:
                self.closed = True

    def isatty(self):
        if self.closed:
            raise ValueError("I/O operation on closed file")
        return False

    def seek(self, pos, whence=0):
        """Seek to specified position into the chunk.
        Default position is 0 (start of chunk).
        If the file is not seekable, this will result in an error.
        """

        if self.closed:
            raise ValueError("I/O operation on closed file")
        if not self.seekable:
            raise OSError("cannot seek")
        if whence == 1:
            pos = pos + self.size_read
        elif whence == 2:
            pos = pos + self.chunksize
        if pos < 0 or pos > self.chunksize:
            raise RuntimeError
        self.file.seek(self.offset + pos, 0)
        self.size_read = pos

    def tell(self):
        if self.closed:
            raise ValueError("I/O operation on closed file")
        return self.size_read

    def read(self, size=-1):
        """Read at most size bytes from the chunk.
        If size is omitted or negative, read until the end
        of the chunk.
        """

        if self.closed:
            raise ValueError("I/O operation on closed file")
        if self.size_read >= self.chunksize:
            return b''
        if size < 0:
            size = self.chunksize - self.size_read
        if size > self.chunksize - self.size_read:
            size = self.chunksize - self.size_read
        data = self.file.read(size)
        self.size_read = self.size_read + len(data)
        if self.size_read == self.chunksize and \
           self.align and \
           (self.chunksize & 1):
            dummy = self.file.read(1)
            self.size_read = self.size_read + len(dummy)
        return data

    def skip(self):
        """Skip the rest of the chunk.
        If you are not interested in the contents of the chunk,
        this method should be called so that the file points to
        the start of the next chunk.
        """

        if self.closed:
            raise ValueError("I/O operation on closed file")
        if self.seekable:
            try:
                n = self.chunksize - self.size_read
                # maybe fix alignment
                if self.align and (self.chunksize & 1):
                    n = n + 1
                self.file.seek(n, 1)
                self.size_read = self.size_read + n
                return
            except OSError:
                pass
        while self.size_read < self.chunksize:
            n = min(8192, self.chunksize - self.size_read)
            dummy = self.read(n)
            if not dummy:
                raise EOFError
Name
Size
Permissions
Options
__pycache__
--
drwxr-xr-x
asyncio
--
drwxr-xr-x
collections
--
drwxr-xr-x
concurrent
--
drwxr-xr-x
config-3.5m
--
drwxr-xr-x
ctypes
--
drwxr-xr-x
curses
--
drwxr-xr-x
dbm
--
drwxr-xr-x
distutils
--
drwxr-xr-x
email
--
drwxr-xr-x
encodings
--
drwxr-xr-x
ensurepip
--
drwxr-xr-x
html
--
drwxr-xr-x
http
--
drwxr-xr-x
idlelib
--
drwxr-xr-x
importlib
--
drwxr-xr-x
json
--
drwxr-xr-x
lib-dynload
--
drwxr-xr-x
lib2to3
--
drwxr-xr-x
logging
--
drwxr-xr-x
multiprocessing
--
drwxr-xr-x
plat-linux
--
drwxr-xr-x
pydoc_data
--
drwxr-xr-x
site-packages
--
drwxr-xr-x
sqlite3
--
drwxr-xr-x
test
--
drwxr-xr-x
unittest
--
drwxr-xr-x
urllib
--
drwxr-xr-x
venv
--
drwxr-xr-x
wsgiref
--
drwxr-xr-x
xml
--
drwxr-xr-x
xmlrpc
--
drwxr-xr-x
__future__.py
4.728 KB
-rw-r--r--
__phello__.foo.py
0.063 KB
-rw-r--r--
_bootlocale.py
1.271 KB
-rw-r--r--
_collections_abc.py
24.213 KB
-rw-r--r--
_compat_pickle.py
8.355 KB
-rw-r--r--
_compression.py
5.215 KB
-rw-r--r--
_dummy_thread.py
4.998 KB
-rw-r--r--
_markupbase.py
14.256 KB
-rw-r--r--
_osx_support.py
18.667 KB
-rw-r--r--
_pydecimal.py
223.27 KB
-rw-r--r--
_pyio.py
85.906 KB
-rw-r--r--
_sitebuiltins.py
3.042 KB
-rw-r--r--
_strptime.py
21.665 KB
-rw-r--r--
_sysconfigdata.py
26.319 KB
-rw-r--r--
_threading_local.py
7.236 KB
-rw-r--r--
_weakrefset.py
5.571 KB
-rw-r--r--
abc.py
8.426 KB
-rw-r--r--
aifc.py
31.218 KB
-rw-r--r--
antigravity.py
0.465 KB
-rw-r--r--
argparse.py
88.025 KB
-rw-r--r--
ast.py
11.72 KB
-rw-r--r--
asynchat.py
11.69 KB
-rw-r--r--
asyncore.py
19.633 KB
-rw-r--r--
base64.py
20.041 KB
-rwxr-xr-x
bdb.py
22.807 KB
-rw-r--r--
binhex.py
13.627 KB
-rw-r--r--
bisect.py
2.534 KB
-rw-r--r--
bz2.py
12.133 KB
-rw-r--r--
cProfile.py
5.199 KB
-rwxr-xr-x
calendar.py
22.459 KB
-rw-r--r--
cgi.py
35.201 KB
-rwxr-xr-x
cgitb.py
11.741 KB
-rw-r--r--
chunk.py
5.298 KB
-rw-r--r--
cmd.py
14.512 KB
-rw-r--r--
code.py
9.881 KB
-rw-r--r--
codecs.py
35.382 KB
-rw-r--r--
codeop.py
5.854 KB
-rw-r--r--
colorsys.py
3.969 KB
-rw-r--r--
compileall.py
11.437 KB
-rw-r--r--
configparser.py
52.199 KB
-rw-r--r--
contextlib.py
12.159 KB
-rw-r--r--
copy.py
8.736 KB
-rw-r--r--
copyreg.py
6.673 KB
-rw-r--r--
crypt.py
1.835 KB
-rw-r--r--
csv.py
15.75 KB
-rw-r--r--
datetime.py
74.12 KB
-rw-r--r--
decimal.py
0.313 KB
-rw-r--r--
difflib.py
82.23 KB
-rw-r--r--
dis.py
16.943 KB
-rw-r--r--
doctest.py
101.598 KB
-rw-r--r--
dummy_threading.py
2.749 KB
-rw-r--r--
enum.py
21.705 KB
-rw-r--r--
filecmp.py
9.6 KB
-rw-r--r--
fileinput.py
13.925 KB
-rw-r--r--
fnmatch.py
3.089 KB
-rw-r--r--
formatter.py
14.788 KB
-rw-r--r--
fractions.py
24.035 KB
-rw-r--r--
ftplib.py
34.132 KB
-rw-r--r--
functools.py
28.266 KB
-rw-r--r--
genericpath.py
4.262 KB
-rw-r--r--
getopt.py
7.313 KB
-rw-r--r--
getpass.py
5.854 KB
-rw-r--r--
gettext.py
21.025 KB
-rw-r--r--
glob.py
4.953 KB
-rw-r--r--
gzip.py
19.785 KB
-rw-r--r--
hashlib.py
7.792 KB
-rw-r--r--
heapq.py
22.392 KB
-rw-r--r--
hmac.py
4.944 KB
-rw-r--r--
imaplib.py
50.96 KB
-rw-r--r--
imghdr.py
3.67 KB
-rw-r--r--
imp.py
10.426 KB
-rw-r--r--
inspect.py
111.522 KB
-rw-r--r--
io.py
3.316 KB
-rw-r--r--
ipaddress.py
73.958 KB
-rw-r--r--
keyword.py
2.17 KB
-rwxr-xr-x
linecache.py
5.188 KB
-rw-r--r--
locale.py
72.962 KB
-rw-r--r--
lzma.py
12.622 KB
-rw-r--r--
macpath.py
5.769 KB
-rw-r--r--
macurl2path.py
2.668 KB
-rw-r--r--
mailbox.py
76.58 KB
-rw-r--r--
mailcap.py
7.914 KB
-rw-r--r--
mimetypes.py
20.358 KB
-rw-r--r--
modulefinder.py
22.544 KB
-rw-r--r--
netrc.py
5.613 KB
-rw-r--r--
nntplib.py
42.068 KB
-rw-r--r--
ntpath.py
22.259 KB
-rw-r--r--
nturl2path.py
2.387 KB
-rw-r--r--
numbers.py
10.003 KB
-rw-r--r--
opcode.py
5.747 KB
-rw-r--r--
operator.py
10.608 KB
-rw-r--r--
optparse.py
58.93 KB
-rw-r--r--
os.py
36.165 KB
-rw-r--r--
pathlib.py
45.899 KB
-rw-r--r--
pdb.py
59.716 KB
-rwxr-xr-x
pickle.py
54.859 KB
-rw-r--r--
pickletools.py
89.61 KB
-rw-r--r--
pipes.py
8.707 KB
-rw-r--r--
pkgutil.py
20.854 KB
-rw-r--r--
platform.py
45.065 KB
-rwxr-xr-x
plistlib.py
31.064 KB
-rw-r--r--
poplib.py
14.372 KB
-rw-r--r--
posixpath.py
14.562 KB
-rw-r--r--
pprint.py
20.371 KB
-rw-r--r--
profile.py
21.516 KB
-rwxr-xr-x
pstats.py
25.941 KB
-rw-r--r--
pty.py
4.651 KB
-rw-r--r--
py_compile.py
7.013 KB
-rw-r--r--
pyclbr.py
13.246 KB
-rw-r--r--
pydoc.py
101.223 KB
-rwxr-xr-x
queue.py
8.574 KB
-rw-r--r--
quopri.py
7.095 KB
-rwxr-xr-x
random.py
25.843 KB
-rw-r--r--
re.py
15.138 KB
-rw-r--r--
reprlib.py
5.211 KB
-rw-r--r--
rlcompleter.py
6.159 KB
-rw-r--r--
runpy.py
11.679 KB
-rw-r--r--
sched.py
6.07 KB
-rw-r--r--
selectors.py
18.982 KB
-rw-r--r--
shelve.py
8.328 KB
-rw-r--r--
shlex.py
11.18 KB
-rw-r--r--
shutil.py
39.109 KB
-rw-r--r--
signal.py
2.073 KB
-rw-r--r--
site.py
21.005 KB
-rw-r--r--
smtpd.py
34.544 KB
-rwxr-xr-x
smtplib.py
42.612 KB
-rwxr-xr-x
sndhdr.py
6.268 KB
-rw-r--r--
socket.py
26.499 KB
-rw-r--r--
socketserver.py
24.088 KB
-rw-r--r--
sre_compile.py
17.979 KB
-rw-r--r--
sre_constants.py
6.661 KB
-rw-r--r--
sre_parse.py
34.294 KB
-rw-r--r--
ssl.py
41.359 KB
-rw-r--r--
stat.py
4.92 KB
-rw-r--r--
statistics.py
19.075 KB
-rw-r--r--
string.py
11.576 KB
-rw-r--r--
stringprep.py
12.614 KB
-rw-r--r--
struct.py
0.251 KB
-rw-r--r--
subprocess.py
57.531 KB
-rw-r--r--
sunau.py
17.671 KB
-rw-r--r--
symbol.py
2.057 KB
-rwxr-xr-x
symtable.py
7.022 KB
-rw-r--r--
sysconfig.py
23.889 KB
-rw-r--r--
tabnanny.py
11.146 KB
-rwxr-xr-x
tarfile.py
90.889 KB
-rwxr-xr-x
telnetlib.py
22.477 KB
-rw-r--r--
tempfile.py
26.012 KB
-rw-r--r--
textwrap.py
19.1 KB
-rw-r--r--
this.py
0.979 KB
-rw-r--r--
threading.py
47.878 KB
-rw-r--r--
timeit.py
12.112 KB
-rwxr-xr-x
token.py
3.003 KB
-rw-r--r--
tokenize.py
27.139 KB
-rw-r--r--
trace.py
30.813 KB
-rwxr-xr-x
traceback.py
21.655 KB
-rw-r--r--
tracemalloc.py
15.274 KB
-rw-r--r--
tty.py
0.858 KB
-rw-r--r--
types.py
8.593 KB
-rw-r--r--
typing.py
78.257 KB
-rw-r--r--
uu.py
6.607 KB
-rwxr-xr-x
uuid.py
22.716 KB
-rw-r--r--
warnings.py
15.479 KB
-rw-r--r--
wave.py
17.268 KB
-rw-r--r--
weakref.py
19.986 KB
-rw-r--r--
webbrowser.py
21.316 KB
-rwxr-xr-x
xdrlib.py
5.774 KB
-rw-r--r--
zipapp.py
6.989 KB
-rw-r--r--
zipfile.py
71.945 KB
-rw-r--r--