目前,我对URL有一个GET请求,它返回三种内容:.zip文件、.zipsig文件和.txt文件。
我只对.zip文件感兴趣,它有几十个.json文件。我想提取所有这些.json文件,更好的是直接进入单个熊猫数据框架,但将它们提取到文件夹中也是有效的。
到目前为止,大部分代码被盗用:
license = requests.get(url, headers={'Authorization': "Api-Token " + 'blah'})
z = zipfile.ZipFile(io.BytesIO(license.content))
billingRecord = z.namelist()[0]
z.extract(billingRecord, path = "C:\\Users\\Me\\Downloads\\Json license")这会将整个.zip文件提取到路径。我希望将单个.json文件从上述.zip文件提取到路径中。
发布于 2022-11-02 18:27:09
import io
import zipfile
import pandas as pd
import json
dfs = []
with zipfile.ZipFile(io.BytesIO(license.content)) as zfile:
for info in zfile.infolist():
if info.filename.endswith('.zip'):
zfiledata = io.BytesIO(zfile.read(info.filename))
with zipfile.ZipFile(zfiledata) as json_zips:
for info in json_zips.infolist():
if info.filename.endswith('.json'):
json_data = pd.json_normalize(json.loads(json_zips.read(info.filename)))
dfs.append(json_data)
df = pd.concat(dfs, sort=False)
print(df)发布于 2022-11-02 16:55:08
我会做这样的事。显然,这是我的test.zip文件,但步骤如下:
使用z存档的.endswith('.json')
.extract(info.filename, info.filename)的文件名的json扩展名结束
显然,您已经调用了您的存档z,但是我的是archive,但这应该会让您开始工作。
示例代码:
import zipfile
with zipfile.ZipFile("test.zip", mode="r") as archive:
for info in archive.infolist():
print(info.filename)
if info.filename.endswith('.png'):
print('Match: ', info.filename)
archive.extract(info.filename, info.filename)https://stackoverflow.com/questions/74292737
复制相似问题