鱼C论坛

 找回密码
 立即注册
查看: 2079|回复: 4

如何处理json文件并进行批量下载

[复制链接]
发表于 2023-9-12 14:41:26 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
有一个json文件的数据形式为

{
        "version":"1.14",
        "assets":{
                "f9e0ff803254ae227014841bbced0ecb.zip":{"md5":"20e6c9b24536b9275757eee619d3dbe1", "compressed":true, "size":61675},
                "2c17cca357ed43c8db9ed5633ac6486e.zip":{"md5":"25690e3dee7418e2dd43688bf050486c", "compressed":true, "size":17863},
                "a7872e309036a186b4b37ecf17ac9e95.zip":{"md5":"b4f4ce27c9f75f6d9922b6f572dba816", "compressed":true, "size":7533450},
                "7c329958c81689ac9b4b1693554014a5.zip":{"md5":"1e5a971a3735ebdc2bec82e01364de86", "compressed":true, "size":20572}
        },
        "searchPaths" : []
}

如何进行批量下载 *.zip
比如批量下载 h ttp:/.xxx.com/f9e0ff803254ae227014841bbced0ecb.zip
                    h ttp:/.xxx.com/2c17cca357ed43c8db9ed5633ac6486e.zip
                    h ttp:/.xxx.com/a7872e309036a186b4b37ecf17ac9e95.zip
                    h ttp:/.xxx.com/7c329958c81689ac9b4b1693554014a5.zip

下载完毕后 自动解压到当前目录
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-9-12 14:41:33 | 显示全部楼层
可以使用Python中的requests和zipfile模块来实现。具体代码如下:
import requests
import zipfile
import io
import json

# 读取json文件
with open('file.json', 'r') as f:
    data = json.load(f)

# 遍历assets字典,下载并解压zip文件
for key, value in data['assets'].items():
    if key.endswith('.zip'):
        url = 'http://xxx.com/' + key
        r = requests.get(url)
        with zipfile.ZipFile(io.BytesIO(r.content)) as z:
            z.extractall('.')

首先使用 json.load() 方法读取json文件,然后遍历 assets 字典,找到以 .zip 结尾的文件,拼接url进行下载。下载完成后,使用 zipfile.ZipFile() 方法打开zip文件,并使用 extractall() 方法解压到当前目录。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-9-12 14:51:12 | 显示全部楼层
isdkz 发表于 2023-9-12 14:41
可以使用Python中的requests和zipfile模块来实现。具体代码如下:

需要可视化操作 ,点击按钮打开选择指定json 然后点击开始下载
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-9-12 17:11:09 | 显示全部楼层
本帖最后由 isdkz 于 2023-9-12 17:14 编辑
koma610630 发表于 2023-9-12 14:51
需要可视化操作 ,点击按钮打开选择指定json 然后点击开始下载


import tkinter as tk
from tkinter import filedialog
import requests
import zipfile
import io
import json

# 定义开始下载函数
def start_download():
    filepath = filepath_var.get()
    with open(filepath, 'r') as f:
        data = json.load(f)
    # 遍历assets字典,下载并解压zip文件
    for key, value in data['assets'].items():
        if key.endswith('.zip'):
            url = 'http://xxx.com/' + key
            r = requests.get(url)
            with zipfile.ZipFile(io.BytesIO(r.content)) as z:
                z.extractall('.')
    # 下载完成后弹出提示框
    tk.messagebox.showinfo('提示', '下载完成!')

# 创建主窗口和各种控件
root = tk.Tk()
root.title('批量下载')
root.geometry('300x150')
filepath_var = tk.StringVar()
filepath_label = tk.Label(root, text='请选择json文件:')
filepath_label.pack(pady=10)
filepath_entry = tk.Entry(root, textvariable=filepath_var)
filepath_entry.pack(pady=5)
def choose_file():
    filepath = filedialog.askopenfilename()
    filepath_var.set(filepath)
choose_file_button = tk.Button(root, text='选择文件', command=choose_file)
choose_file_button.pack(pady=5)
confirm_button = tk.Button(root, text='开始下载', command=start_download)
confirm_button.pack(pady=10)

# 进入消息循环
root.mainloop()

评分

参与人数 1荣誉 +5 贡献 +3 收起 理由
歌者文明清理员 + 5 + 3 好评

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-9-12 17:31:19 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-9-21 13:22

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表