【发布时间】:2019-02-16 04:41:33
【问题描述】:
我有几个子文件夹,每个子文件夹都包含 twitter 压缩文件。我希望 python 遍历这些子文件夹并将它们转换为常规 JSON 文件。 我有 300 多个子文件夹,每个子文件夹包含大约 1000 个或更多这些压缩文件。 这些文件的一个示例被命名为: 00_activities.json.gz%3FAWSAccessKeyId=AKIAJADH5KHBJMUZOPEA&Expires=1404665927&Signature=%2BdCn%252Ffn%2BFfRQhknWWcH%2BtnwlSfk%3D"
提前致谢
我已经尝试了下面的代码,只是想看看我是否可以提取其中一个文件,但没有一个有效。
import zipfile
zip_ref = zipfile.ZipFile('E:/echoverse/Subdivided Tweets/Subdivided Tweets/Tweets-0', 'r')
zip_ref.extractall('E:/echoverse/Subdivided Tweets/Subdivided Tweets/Tweets-0/00_activities.json.gz%3FAWSAccessKeyId=AKIAJADH5KHBJMUZOPEA&Expires=1404665927&Signature=%2BdCn%252Ffn%2BFfRQhknWWcH%2BtnwlSfk%3D')
zip_ref.close()
我也试过了:
import tarfile
tar = tarfile.open('E:/echoverse/Subdivided Tweets/Subdivided Tweets/Tweets-0/00_activities.json.gz%3FAWSAccessKeyId=AKIAJADH5KHBJMUZOPEA&Expires=1404665927&Signature=%2BdCn%252Ffn%2BFfRQhknWWcH%2BtnwlSfk%3D')
tar.extractall()
tar.close
这是我的第三次尝试(但没有运气):
import gzip
import json
with gzip.open('E:/echoverse/Subdivided Tweets/Subdivided Tweets/Tweets-0/00_activities.json.gz%3FAWSAccessKeyId=AKIAJADH5KHBJMUZOPEA&Expires=1404665927&Signature=%2BdCn%252Ffn%2BFfRQhknWWcH%2BtnwlSfk%3D'
, 'rb') as f:
d = json.loads(f.read().decode("utf-8"))
stackover 流还有另一个非常相似的威胁,但我的问题不同,因为我的压缩文件最初是 JSON,当我使用最后一种方法时,我得到了这个错误: 发生异常:json.decoder.JSONDecodeError 期望值:第 1 行第 1 列(char 0)
【问题讨论】:
-
谢谢,但我现在的问题是如何将 gz 文件转换为 JSON。这个问题是关于 tar 文件的
-
如果内容实际上是 JSON,您的最后一次尝试应该有效(而前两次永远不会)。您提取的数据是什么样的,即
f.read()的输出? -
文件是 JSON,使用 Carlos 的代码,我能够看到正在解码和打印的文件。但是我仍然不知道如何存储解压缩的文件。
标签: python json gzip traversal