python写的,根据列表下载文件,并重命名

发布于 2023-06-17  251 次阅读


工作中碰到,要下载一堆文件,同时要重命名,就想,直接把下载地址和重命名的文件名存成excel文件,让python一个个慢慢下去。
因为是自己用的,所以没写异常啥的。以下是源代码:

#################
# 在指定目录下放置指定xls文件,Sheet1 第一列为下载的链接地址,第二列为下载另存为的文件名
# excel 格式:第一行第一列 标题:要下载的网址 第一行第二列 标题:另存为文件名,从第二行开始按内容填写
# 如果要修改excel的文件名或位置,直接在代码里改
# 下载好的文件就放在运行目录中
# xlrd需要1.2.0版
# 没有考虑文件重名、文件名不规范、excel文件字段内容等,在发现有错误时,可以从打印结果知道
#################
import requests
import xlrd

#读取列表
wb=xlrd.open_workbook("E:\pythonProject\下载清单.xlsx")
sh=wb.sheet_by_name("Sheet1")
for i in range(1,sh.nrows):
    #取第一列文件名
    url=sh.cell(i,0).value

    #下载
    r=requests.get(url)
    #存入第二列文件名
    with open(sh.cell(i,1).value,"wb") as code:
        code.write(r.content)

    #显示已下载的内容
    print(sh.cell(i,1).value)

#结束
print("下载结束")

修改后代码

import requests
import xlrd

try:
    # 读取列表
    wb = xlrd.open_workbook("E:\pythonProject\下载清单.xlsx")
    sh = wb.sheet_by_name("Sheet1")

    for i in range(1, sh.nrows):
        # 取第一列文件名
        url = sh.cell(i, 0).value

        try:
            # 下载
            r = requests.get(url)
            # 存入第二列文件名
            with open(sh.cell(i, 1).value, "wb") as code:
                code.write(r.content)

            # 显示已下载的内容
            print(sh.cell(i, 1).value)
        except requests.exceptions.RequestException as e:
            # 处理请求异常
            print(f"下载第{i}行出现请求异常: {e}")
        except IOError as e:
            # 处理文件IO异常
            print(f"保存第{i}行文件时出现IO异常: {e}")
        except Exception as e:
            # 处理其他异常
            print(f"下载第{i}行出现未知异常: {e}")

    # 结束
    print("下载结束")
except FileNotFoundError:
    print("找不到指定的Excel文件")
except xlrd.XLRDError:
    print("Excel文件读取错误")
except Exception as e:
    print(f"发生未知错误: {e}")

下载失败跳过

import requests
import xlrd
try:
    # 读取列表
    wb = xlrd.open_workbook("E:\pythonProject\下载清单.xlsx")
    sh = wb.sheet_by_name("Sheet1")
    for i in range(1, sh.nrows):
        # 取第一列文件名
        url = sh.cell(i, 0).value
        try:
            # 下载
            r = requests.get(url)
            # 存入第二列文件名
            with open(sh.cell(i, 1).value, "wb") as code:
                code.write(r.content)
            # 显示已下载的内容
            print(sh.cell(i, 1).value)
        except requests.exceptions.RequestException as e:
            # 处理请求异常
            print(f"下载第{i}行出现请求异常: {e}")
            continue
        except IOError as e:
            # 处理文件IO异常
            print(f"保存第{i}行文件时出现IO异常: {e}")
            continue
        except Exception as e:
            # 处理其他异常
            print(f"下载第{i}行出现未知异常: {e}")
            continue
    # 结束
    print("下载结束")
except FileNotFoundError:
    print("找不到指定的Excel文件")
except xlrd.XLRDError:
    print("Excel文件读取错误")
except Exception as e:
    print(f"发生未知错误: {e}")