pyrominfo
pyrominfo copied to clipboard
File-like object for parseBuffer()?
Instead passing bytes
or str
objects to parseBuffer(data)
, it could take actual file-like objects.
That would not only make it suitable to pass huge (>100MiB) images (e.g. PSX, PSP, Dreamcast, Gamecube, etc.) to that function, it also makes it easy to pass archive contents:
- File-like objects from zip files via
zipfile.ZipFile.open(...)
- File-like objects from (un)compressed tar files via
tarfile.TarFile.extractfile(...)
-
bz2.BZ2File
objects -
gzip.GzipFile
objects - Even socket data via socket.socket.makefile(...) (even though I can't see a real use case for this)
If you want to read in-memory data like the current parseBuffer()
implementation, you can still do that by using StringIO.StringIO
objects as a wrapper to create a file-like object from a string.
The only downer is that the file-like objects returned by zipfile.ZipFile.open(...)
and tarfile.TarFile.extractfile(...)
do not support the seek()
method, so these wouldn't work in all cases (e.g. the CDI/GDI parser in PR #3, which uses seek()
a lot).
@garbear What do you think?