Comment construire une TarFile objet en mémoire à partir de l'octet de la mémoire tampon dans Python 3?
Est-il possible de créer un TarFile objet en mémoire à l'aide d'un tampon contenant du goudron de données sans avoir à écrire la TarFile à disque et à l'ouvrir à nouveau? Nous obtenons les octets transmis sur un support.
Quelque chose comme ceci:
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)
Remarque: l'une des raisons pour cela est que nous voulons par la suite être en mesure de le faire avec plusieurs threads simultanément, donc à l'aide d'un fichier temporaire peut être remplacée si deux threads tentent de le faire en même temps.
Merci pour toute aide!
OriginalL'auteur Sefu | 2013-04-07
Vous devez vous connecter pour publier un commentaire.
BytesIO() à partir de IO module fait exactement ce dont vous avez besoin.
^ exactement. J'avais appris à
fileobj=file_like_object
et de ne pas fairemode=
de simplement donner de la mode qui n'est pas valide python x0 (ils sont tous les arguments de position, mais les documents montrent"filename", "r:gz"
-- si vous utilisez des trucs à partir de la mémoire, vous devezfileobj=..., mode=...
explicitement!OriginalL'auteur decaf
Sûr, quelque chose comme ceci:
(Ajuster
mode
pour l'adapter au format de votre fichier tar, par exemple, peut-être " mode='r:gz', etc.)OriginalL'auteur Warren Weckesser