如何处理json文件并进行批量下载
有一个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
下载完毕后 自动解压到当前目录 可以使用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() 方法解压到当前目录。 isdkz 发表于 2023-9-12 14:41
可以使用Python中的requests和zipfile模块来实现。具体代码如下:
需要可视化操作 ,点击按钮打开选择指定json 然后点击开始下载 本帖最后由 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()
isdkz 发表于 2023-9-12 17:11
{:5_106:}
页:
[1]