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
相关产品推荐
相关产品推荐

