È possibile creare un oggetto TarFile in memoria utilizzando un buffer contenente i dati tar senza dover scrivere il file TarFile sul disco e aprirlo di nuovo? Otteniamo i byte inviati su un socket.Come costruire un oggetto TarFile in memoria dal buffer di byte in Python 3?
Qualcosa di simile a questo:
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)
Nota: uno dei motivi per fare questo è che alla fine abbiamo vogliamo essere in grado di fare questo con più thread contemporaneamente, in modo da utilizzare un file temporaneo potrebbe essere sovrascritto se due i thread cercano di farlo allo stesso tempo.
Grazie per qualsiasi aiuto!
potrebbe essere necessario aggiungere la modalità, a seconda di quello che stai facendo (archivio in un archivio) tarfile.open (fileobj = byte_stream, mode = 'r: gz') – Alex
^esattamente. Avevo ottenuto 'fileobj = file_like_object' e non stavo facendo' mode = 'dando solo la modalità che non è valida python x0 (sono tutti argomenti posizionali, ma i documenti mostrano' "nomefile", "r: gz "' - Se usi la memoria dalla memoria devi 'fileobj = ..., mode = ...' esplicitamente! – sjm324