You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python读取txt存储的图片URL批量下载报OSError错误如何解决?

Windows下Python批量下载txt中URL图片的解决方案

错误原因

  • 调用readline()读取每行URL时,会自动带上行尾的换行符\n,拆分得到的文件名末尾会多出来\n字符,Windows系统不允许文件名包含换行符,直接触发OSError 22报错。
  • 原代码的while True循环没有退出逻辑,所有URL读取完成后会继续执行空读取逻辑,后续也会触发请求异常。
  • 打开的txt文件没有显式关闭,存在资源占用问题。

修正后的可运行代码

import requests
import shutil

# 用with语法打开url文件,自动处理关闭
with open("test.txt", "r", encoding="utf-8") as f:
    # 逐行迭代读取,自动处理读取终止
    for image_url in f:
        # 去除首尾空白字符(包含换行符、首尾空格)
        image_url = image_url.strip()
        # 跳过空行
        if not image_url:
            continue
        # 拆分文件名
        filename = image_url.split("/")[-1]
        # 发送请求下载
        r = requests.get(image_url, stream=True)
        # 增加请求成功判断,避免下载无效内容
        if r.status_code == 200:
            r.raw.decode_content = True
            with open(filename, 'wb') as img_f:
                shutil.copyfileobj(r.raw, img_f)
            print(f"{filename} 下载完成")
        else:
            print(f"{image_url} 下载失败,状态码:{r.status_code}")

额外优化说明

  • 增加了请求状态码判断,避免URL无效时写入空文件
  • 增加了空行跳过逻辑,适配txt中存在空行的场景
  • 增加了下载状态提示,方便查看执行情况

内容的提问来源于stack exchange,提问作者Leearn2303

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 23:24:01