Si el archivo tar.bz2 se descarga a través de la red, puede leer directamente el contenido del archivo después de descomprimirlo en la memoria, en lugar de almacenar el archivo en caché localmente y luego descomprimirlo antes de leerlo, lo que puede ahorrar IO.
Para conocer el método de procesamiento de archivos tar comprimidos con gzip, consulte: https://stackoverflow.com/questions/15352668/download-and-decompress-gzipped-file-in-memory
Cómo lidiar con archivos tar comprimidos bz2: https://stackoverflow.com/questions/46291529/how-to-decompress-tar-bz2-in-memory-with-python
import requests
import tarfile
from io import BytesIO
url = "www.google.com" # the url you get tar.bz2 file from, need to change according to your application.
filename = "res_test.csv" # the filename in your tar.bz2 file.
def decompress_tar_bz2_from_net(url, filename):
"""
decompress the tar.bz2 format file in memory, instead of buffer it on disk
and then decompress.
:param url:
:param filename:
:return:
"""
fileobj = BytesIO(requests.get(url).content)
contents = tarfile.open(fileobj=fileobj).extractfile(filename).read()
return contents
Para obtener más métodos de uso, consulte: https://github.com/buxizhizhoum/tool_scripts/blob/master/app/bin/decompress_in_memory.py