Is it possible to create a TarFile object in memory using a buffer containing the tar data without having to write the TarFile to disk and open it up again? We get the bytes sent over a socket.
Something like this:
import tarfile byte_array = client.read_bytes() tar = tarfile.open(byte_array) # how to do this? # use "tar" as a regular TarFile object for member in tar.getmembers(): f = tar.extractfile(member) print(f)
Note: one of the reasons for doing this is that we eventually want to be able to do this with multiple threads simultaneously, so using a temp file might be overridden if two threads try to do it at the same time.
Thank you for any and all help!
Use the tarfile module to create a zip archive of a directory. Walk the directory tree using os. walk and add all the files in it recursively.
You can use the tarfile module to read and write tar files. To extract a tar file, you need to first open the file and then use the extract method of the tarfile module.
BytesIO() from IO module does exactly what you need.
import tarfile, io byte_array = client.read_bytes() file_like_object = io.BytesIO(byte_array) tar = tarfile.open(fileobj=file_like_object) # use "tar" as a regular TarFile object for member in tar.getmembers(): f = tar.extractfile(member) print(f)
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With