鱼C论坛

 找回密码
 立即注册
查看: 2934|回复: 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

下载完毕后 自动解压到当前目录
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

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

  1. import requests
  2. import zipfile
  3. import io
  4. import json

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

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


首先使用 json.load() 方法读取json文件,然后遍历 assets 字典,找到以 .zip 结尾的文件,拼接url进行下载。下载完成后,使用 zipfile.ZipFile() 方法打开zip文件,并使用 extractall() 方法解压到当前目录。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

需要可视化操作 ,点击按钮打开选择指定json 然后点击开始下载
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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


  1. import tkinter as tk
  2. from tkinter import filedialog
  3. import requests
  4. import zipfile
  5. import io
  6. import json

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

  21. # 创建主窗口和各种控件
  22. root = tk.Tk()
  23. root.title('批量下载')
  24. root.geometry('300x150')
  25. filepath_var = tk.StringVar()
  26. filepath_label = tk.Label(root, text='请选择json文件:')
  27. filepath_label.pack(pady=10)
  28. filepath_entry = tk.Entry(root, textvariable=filepath_var)
  29. filepath_entry.pack(pady=5)
  30. def choose_file():
  31.     filepath = filedialog.askopenfilename()
  32.     filepath_var.set(filepath)
  33. choose_file_button = tk.Button(root, text='选择文件', command=choose_file)
  34. choose_file_button.pack(pady=5)
  35. confirm_button = tk.Button(root, text='开始下载', command=start_download)
  36. confirm_button.pack(pady=10)

  37. # 进入消息循环
  38. root.mainloop()
复制代码

评分

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

查看全部评分

小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-9-12 17:31:19 | 显示全部楼层
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-4-22 19:44

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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