python 读取excel中链接的二进制文件流保存到本地

python 读取excel中链接为二进制文件流保存到本地的文件夹内

读取excel内的 表头为 Link 的列

import pandas as pd
import requests
import os
import re
import tkinter as tk
from tkinter import filedialog, messagebox


def browse_file():
    file_path = filedialog.askopenfilename()
    if file_path:
        entry_path.delete(0, tk.END)
        entry_path.insert(0, file_path)


def download_images():
    # 获取文件路径
    excel_path = entry_path.get()

    # 读取 Excel 文件
    df = pd.read_excel(excel_path)

    # 创建目录用于保存图片
    if not os.path.exists("images"):
        os.mkdir("images")

    # 循环处理每个链接并保存对应的图片文件
    for i, row in df.iterrows():
        link = row["Link"]
        if pd.notna(link):
            match = re.search(r"\bcodes=(\d+)\b", link)
            if match:
                codes = match.group(1)
            else:
                continue

            # 发起 HTTP 请求并保存响应数据到本地文件
            response = requests.get(link)
            filename = f"image_{codes}.png"
            filepath = os.path.join("images", filename)
            with open(filepath, "wb") as f:
                f.write(response.content)

    # 提示下载完成
    messagebox.showinfo(title="提示", message="图片下载完成!")


# 创建主窗口
window = tk.Tk()
window.title("图片下载器")
window.geometry("600x200")

# 创建文件选择控件
frame_file = tk.Frame(window)
frame_file.pack(pady=10)
label_path = tk.Label(frame_file, text="请选择 Excel 文件:", font=("微软雅黑", 12))
label_path.pack(side=tk.LEFT)
entry_path = tk.Entry(frame_file, width=30, font=("微软雅黑", 12))
entry_path.pack(side=tk.LEFT)
button_browse = tk.Button(frame_file, text="浏览", font=("微软雅黑", 12), command=browse_file)
button_browse.pack(side=tk.LEFT)

# 创建下载按钮
button_download = tk.Button(window, text="下载图片", font=("微软雅黑", 16), command=download_images)
button_download.pack(pady=20)

# 进入消息循环
window.mainloop()
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值