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

如何用Python逐行读取文件内容并发起对应HTTP请求

解决Python逐行读取文件并发起HTTP请求的问题

你的核心问题是直接使用readlines()返回的列表拼接URL,导致整个列表被作为参数传递,而不是逐行处理每个内容。下面是具体的解决方法和优化代码:

问题分析

原代码中user = open("user.txt","r").readlines()会返回一个包含每行内容的列表(比如['1\n', '2\n', '3\n']),直接和URL字符串拼接时,Python会把列表转换成它的字符串表示形式,最终请求的URL变成http://example.com/r=['1\n', '2\n', '3\n'],这显然不符合需求。

正确实现代码

基础版本(满足需求)

import requests

# 用with语句安全读取文件,自动管理文件资源
with open("user.txt", "r") as file:
    # 逐行遍历文件内容
    for line in file:
        # 去除每行末尾的换行符和前后空白字符
        user_param = line.strip()
        # 跳过空行(避免处理无效内容)
        if not user_param:
            continue
        # 发起HTTP请求,拼接正确的URL
        response = requests.get(f"http://example.com/r={user_param}")
        # 可选:打印请求结果,方便调试
        print(f"请求参数{user_param},响应状态码:{response.status_code}")

优化版本(更规范、更健壮)

推荐使用params参数传递查询参数(自动处理URL编码),并添加异常处理避免程序崩溃:

import requests
from requests.exceptions import RequestException

with open("user.txt", "r") as file:
    for line in file:
        user_param = line.strip()
        if not user_param:
            continue
        try:
            # 用params传递参数,更安全规范
            response = requests.get("http://example.com", params={"r": user_param})
            # 检查HTTP响应状态,非200则抛出异常
            response.raise_for_status()
            print(f"请求{user_param}成功:{response.text[:50]}")
        except RequestException as e:
            print(f"请求{user_param}失败:{str(e)}")

关键注意事项

  • 处理换行符:readlines()或逐行读取的每行末尾会带有\n,必须用strip()去除,否则请求参数会包含无效的换行符。
  • 文件资源管理:使用with语句打开文件,Python会自动在代码块结束后关闭文件,避免资源泄漏。
  • 参数传递规范:直接拼接URL容易出现编码问题(比如参数包含特殊字符),用params参数可以让requests自动处理URL编码,更可靠。
  • 异常处理:网络请求可能出现各种错误(比如连接失败、HTTP错误),添加异常处理可以让程序更健壮。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 06:05:57