Python3运行代码报TextIOWrapper.write()参数数量错误如何修复
代码错误修复说明
错误原因
- 直接触发报错的原因是调用
f.write()时传入了2个参数,Python文件对象的write()方法仅支持传入1个待写入的内容参数,多余的f参数属于误传。 - 存在隐藏问题:
requests返回的response.content是字节类型数据,你当前使用'w'文本模式打开文件,写入字节数据会后续触发编码类型错误。 - 存在冗余代码:
with open()上下文管理器会自动在代码块执行结束后关闭文件句柄,不需要手动调用f.close()。
修复后完整代码
如果下载的是二进制类文件(压缩包、图片、exe等),使用二进制写入模式即可:
import os import sys import time import datetime import requests repo_url = 'https://hide-ip/' s = requests.Session() package_name = sys.argv[1] url = repo_url + package_name response = s.get(url) with open(package_name, 'wb') as f: f.write(response.content)
如果确认下载的是文本类文件,可以保留文本写入模式,将写入内容替换为解码后的文本:
import os import sys import time import datetime import requests repo_url = 'https://hide-ip/' s = requests.Session() package_name = sys.argv[1] url = repo_url + package_name response = s.get(url) with open(package_name, 'w', encoding='utf-8') as f: f.write(response.text)
内容的提问来源于stack exchange,提问作者Happer64Bit
相关产品推荐
相关产品推荐

