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

Python循环输出写入变量名命名的TXT文件报错,如何正确处理?

问题解决:循环中按变量名生成文件并写入内容

你的代码报错核心原因是:print函数的file参数需要接收已打开的文件对象,而不是直接传文件名字符串。

修正后的代码

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/google', params=payload)
    # 按变量名构造文件名,用with语句自动管理文件打开/关闭
    filename = f"{var}.txt"
    with open(filename, 'w', encoding='utf-8') as output_file:
        # 两种写入方式选其一即可
        print(resp.text, file=output_file)
        # 或者用write方法:output_file.write(resp.text)

关键说明

  • 使用with open()语句:这是Python处理文件的标准写法,代码块结束后会自动关闭文件,避免资源泄漏。
  • 文件名构造:f"{var}.txt"是简洁的字符串格式化写法,和str(var) + '.txt'效果一致。
  • 编码指定:加上encoding='utf-8'可避免中文等非ASCII字符写入时出现乱码。
  • 写入方式:print会自动在内容末尾加换行符,write则完全按原内容写入,按需选择即可。

额外注意事项

如果var中包含操作系统不允许的文件名字符(比如/、:、*等),需要先清洗变量:

import re
# 把非法字符替换为下划线
clean_var = re.sub(r'[\\/*?:"<>|]', '_', var)
filename = f"{clean_var}.txt"

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 01:55:19