Python循环调用CSV导入多查询变量仅输出最后结果的问题排查
问题分析与解决
问题根源
你的print(resp.text)语句位于for循环外部,循环过程中每次执行requests.get都会覆盖resp变量,循环结束后只会打印最后一次请求的结果,也就是最后一个查询词的返回内容。
修复后的代码
把print语句缩进,放到for循环内部,这样每个查询词请求后都会立即打印结果:
import csv import requests with open('test.csv', 'r') as file: next(file) # 跳过表头 varlist = [row[0] for row in csv.reader(file, delimiter=",")] for var in varlist: payload = {'api_key': 'API_KEY', 'query':str(var), 'results':'10', 'country':'gb', 'page':'0'} resp = requests.get('https://api.example.com', params=payload) print(resp.text) # 缩进后放入循环内
额外优化建议
- 添加异常处理,避免单个请求失败导致整个程序中断:
for var in varlist: payload = {'api_key': 'API_KEY', 'query':str(var), 'results':'10', 'country':'gb', 'page':'0'} try: resp = requests.get('https://api.example.com', params=payload) resp.raise_for_status() # 检查请求是否成功 print(resp.text) except requests.exceptions.RequestException as e: print(f"查询词 {var} 请求失败: {e}")
- 如果需要保存结果到文件,可在循环内追加写入:
with open('search_results.txt', 'a', encoding='utf-8') as result_file: for var in varlist: payload = {'api_key': 'API_KEY', 'query':str(var), 'results':'10', 'country':'gb', 'page':'0'} try: resp = requests.get('https://api.example.com', params=payload) resp.raise_for_status() result_file.write(resp.text + '\n') except requests.exceptions.RequestException as e: result_file.write(f"查询词 {var} 请求失败: {e}\n")
内容的提问来源于stack exchange,提问作者pwrsheller
相关产品推荐
相关产品推荐

