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

使用Urllib出现[WinError 6] The handle is invalid错误求助

问题分析与解决

首先,你的代码出现OSError: [WinError 6] The handle is invalid错误,主要有几个关键问题:

1. 文件名参数错误(核心原因)

你调用Download(link, filenaame)时,第二个参数filenaame是整数类型,但urllib.request.urlretrieve的第二个参数需要是字符串格式的文件名。第一次运行时系统可能勉强处理,但后续循环中重复使用整数作为文件名,或者文件句柄未正确释放,就会触发句柄无效的错误。

另外你写的filenaame =+ 1是语法错误——Python里没有=+这种写法,这等价于filenaame = 1,而不是你想要的自增操作(正确写法是filenaame += 1)。这导致你的文件名一直被重置为1,进一步加剧了文件句柄的冲突。

2. 文件读取未正确关闭

你直接用f = open("links.txt", "r")打开文件,但没有手动关闭,这可能导致文件句柄泄漏,在循环中累积引发错误。推荐使用with语句自动管理文件资源。

3. 未处理换行符

readlines()读取的每行末尾会包含换行符\n,如果不处理,会导致后续的字符串分割(split('?$'))出现异常,生成的链接可能包含无效字符,间接引发下载错误。

修正后的代码

import urllib.request

def Download(url, file_name):
    # 确保文件名是字符串格式,添加图片后缀(可根据实际格式调整)
    file_name_str = str(file_name) + ".jpg"
    urllib.request.urlretrieve(url, file_name_str)
    print(f"Successfully downloaded: {file_name_str}")

# 使用with语句自动管理文件资源,避免句柄泄漏
with open("links.txt", "r") as f:
    lines = f.readlines()
    for line in lines:
        # 去除每行的换行符和空白字符,跳过空行
        line = line.strip()
        if not line:
            continue
        for x in range(1, 5):
            cut_string = line.split('?$')
            # 校验链接格式是否符合预期
            if len(cut_string) < 2:
                print(f"Skipping invalid link: {line}")
                continue
            new_string = cut_string[0]
            numerator = new_string.split('/1/')
            if len(numerator) < 2:
                print(f"Cannot split link correctly: {new_string}")
                continue
            # 构造目标下载链接
            link = f"{numerator[0]}/{x}/{numerator[1]}"
            # 构造清晰的文件名:原名称+序号
            original_name = numerator[1].split('.')[0]
            file_name = f"{original_name}{x}"
            print(f"Downloading: {file_name}")
            Download(link, file_name)

额外说明

  • 我给文件名添加了.jpg后缀,你可以根据实际图片格式(比如.png)修改;
  • 增加了格式校验逻辑,避免因links.txt里的无效链接导致程序崩溃;
  • 用f-string替代了format(),代码更简洁易读;
  • 跳过了空行,处理文件中可能存在的无效内容。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 06:33:48