如何将变量内容写入文件?如何将变量传入f.write()函数?
解决将变量内容写入文件的问题
我来帮你搞定这个问题!你当前代码里的小问题很明显——f.write('jsonData')是把字符串字面量'jsonData'写入了文件,而不是变量jsonData的实际内容。接下来我给你详细说明正确的实现方式:
核心要点
jsonData是通过json.loads(data)得到的Python字典对象,而f.write()只接受字符串类型的参数,所以我们需要先把字典转换为JSON格式的字符串,这里用json.dumps()方法是最优选择,它能将字典转为标准JSON字符串,还支持格式化输出让日志更易读。
推荐实现(使用with语句,更安全)
推荐用with语句操作文件,它会自动帮你关闭文件,避免手动close()可能引发的异常问题:
def get(self): url = 'http://httpbin.org/get' r = requests.get(url) data = r.text jsonData = json.loads(data) # 将jsonData写入日志文件 with open('test_logs.txt', 'a+', encoding='utf-8') as f: # 将字典转为格式化的JSON字符串,indent=2让结构更清晰 json_str = json.dumps(jsonData, indent=2) # 写入字符串并换行,避免内容堆积 f.write(json_str + '\n') return jsonData
保留原有open/close的写法
如果你想沿用原来的文件操作方式,修改如下即可:
def get(self): url = 'http://httpbin.org/get' r = requests.get(url) data = r.text jsonData = json.loads(data) # 将jsonData写入日志文件 f = open('test_logs.txt', 'a+', encoding='utf-8') json_str = json.dumps(jsonData, indent=2) f.write(json_str + '\n') f.close() return jsonData
额外说明
- 添加
encoding='utf-8'是为了避免不同操作系统下的编码乱码问题,保证内容正常显示; - 加上
'\n'换行符,让每次写入的日志内容单独占一行,提升可读性; - 如果你只是想写入请求返回的原始文本,直接用
f.write(data + '\n')即可,但针对jsonData变量,json.dumps()的方式能输出规范的JSON格式,比直接打印字典的字符串表示更专业。
内容的提问来源于stack exchange,提问作者computerguy1234
相关产品推荐
相关产品推荐

