Python读取txt拼接API URL发请求仅首行生效问题求助
问题根源
你的代码存在4处核心逻辑错误,直接导致仅能处理第一行内容:
- 遍历文件对象
for line in f本身已经是逐行读取的实现,循环内部额外调用f.readlines()会一次性读取文件剩余的全部内容,直接打乱逐行迭代的流程。 - 循环内执行
f=line.rstrip("\t")会把原本存储文件句柄的变量f覆盖为字符串,下一次循环迭代时f已经不是可读取的文件对象,无法继续获取后续行内容。 - URL拼接、API请求、结果打印的逻辑全部写在了文件读取循环的外部,等循环结束后才会执行,只会用循环最终留存的f值发起一次请求,完全不会逐行触发请求流程。
rstrip("\t")仅会移除行尾的制表符,文本文件每行默认末尾带有换行符\n,不清理的话拼接进URL会导致请求地址异常。
修正后代码
import requests # 固定URL前缀 BASE_URL = '[url here]' with open("words.txt", "r", encoding="utf-8") as f: for line in f: # 移除行首尾所有空白字符(换行、制表符、多余空格) word = line.strip() # 跳过空行,避免发起无效请求 if not word: continue # 拼接完整请求地址 url = BASE_URL + word resp = requests.get(url) # 打印请求标识和返回结果,方便调试 print(f"当前请求单词:{word},响应状态码:{resp.status_code}") print(resp.json())
补充说明
- 原代码中
import json属于无用导入,requests库的响应对象自带.json()方法可直接解析JSON格式的返回值,无需额外导入json模块。 - 打开文件时指定
encoding="utf-8"可以避免Windows系统下默认使用GBK编码读取文件触发的编码报错。 - 你后续要实现的结果写入文件逻辑,直接放在每次请求拿到
resp.json()之后处理即可,不需要改动现有逐行循环的结构。
内容的提问来源于stack exchange,提问作者user19253035
相关产品推荐
相关产品推荐

