我正在使用批量操作通过 Mailchimp Marketing API 请求数据。我收到一个
response_body_url
,单击它即可将 gzip 压缩的文件下载到本地。
对response_body_url 的 GET 请求会返回 JSON 文件的 gzip 压缩 tar 存档。
但我想在 Python 上提取相同的内容并将其加载为 JSON 数组。 Mailchimp 分享了一个关于相同的指南,但他们使用了一个函数
process_batch_archive
并且没有定义这个函数是什么或者它是如何工作的。
这里是指南的链接:链接 谁能帮助我达到预期的结果?谢谢你。
import tarfile
def process_batch_archive():
if fname.endswith("tar.gz"):
tar = tarfile.open(fname, "r:gz")
tar.extractall()
tar.close()
elif fname.endswith("tar"):
tar = tarfile.open(fname, "r:")
tar.extractall()
tar.close()
返回一个字典,因为 gzip 压缩的存档通常包含很少的文件。
import tarfile
def process_batch_archive(data):
tar_fileobj = io.BytesIO(data)
json_contents = {}
with tarfile.open(fileobj=tar_fileobj, mode="r:gz") as tar:
for file in tar:
print (file.name, file.size)
if file.name.endswith(".json"):
contentfobj = tar.extractfile(file)
json_contents[file.name] = json.load(contentfobj)
return json_contents
x = process_batch_archive(data)
print(x.keys())