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

如何在Python中正确使用URL列表(.txt)实现站点可用性检测

批量检测站点可用性的Python脚本修复方案

你的代码无法正常运行主要有几个问题,直接给你修正后的代码,再逐一说明问题点:

修正后的代码

import requests

# 用with语句自动管理文件资源,避免泄漏
with open('G:\\urls_list.txt', 'r', encoding='utf-8') as urls_list:
    for url in urls_list:
        # 去除url前后的空白字符(包括换行符)
        cleaned_url = url.strip()
        # 跳过空行
        if not cleaned_url:
            continue
        try:
            # 设置超时,避免长时间卡住
            response = requests.get(cleaned_url, timeout=10)
            # 检查状态码,2xx都算正常
            if response.status_code >= 200 and response.status_code < 300:
                print(f'{cleaned_url} - 正常')
            else:
                print(f'{cleaned_url} - 不可用,状态码:{response.status_code}')
        except requests.exceptions.RequestException as e:
            # 捕获所有请求异常,比如连接超时、域名无效等
            print(f'{cleaned_url} - 请求失败:{str(e)}')

原代码的问题说明

  • 文件资源未正确管理:直接用open()打开文件后没手动关闭,用with语句会在代码块结束后自动关闭文件,避免资源泄漏。
  • URL未清理:从文本文件读取的每一行末尾会带有换行符\n,直接传给requests.get会导致请求错误,必须用strip()去除空白字符。
  • 未处理请求异常:如果站点无法连接、超时或域名不存在,requests.get会抛出异常导致脚本崩溃,需要用try-except捕获所有请求相关异常。
  • 格式化字符串错误:原代码'Not active'.format(url)没有占位符,应该把{}放在字符串里才能替换变量。
  • 状态码判断不全面:仅判断!=200不够,200-299之间的状态码都表示请求成功。
  • 无超时设置:如果某个站点长时间无响应,脚本会一直卡住,添加timeout参数限制请求时间。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 08:45:26