Python中open()函数传入encoding参数报TypeError问题求助
解决TypeError: 'encoding' 是此函数的无效关键字参数
这个问题我太熟悉啦!你踩的是Python 2和Python 3在文件IO上的一个常见坑,下面给你拆解原因和解决办法:
错误原因
你当前运行代码的环境应该是Python 2——Python 2的内置open()函数根本不支持encoding这个关键字参数,只有Python 3的open()才原生支持编码指定。而且你虽然导入了codecs模块,但并没有实际使用它的文件打开方法,所以还是触发了内置open()的限制。
两种解决办法
办法一:用codecs.open()替换内置open()
既然你已经导入了codecs,直接用它的open()方法就好,这个方法在Python 2和3里都支持encoding参数,完美兼容:
import codecs with codecs.open(filename+'.txt', 'a+', encoding='utf-8') as f: for tweet in list_of_tweets: # 先把清理后的文本存成变量,避免重复写替换逻辑 cleaned_tweet = tweet.text.replace('\r','').replace('\n','') + '|' print(cleaned_tweet) f.write(cleaned_tweet)
办法二:升级到Python 3(更推荐)
Python 2早在2020年就停止维护了,官方不再提供任何安全更新和bug修复。升级到Python 3之后,你原来的代码可以直接运行——因为Python 3的内置open()函数原生支持encoding参数,不需要做任何修改。
内容的提问来源于stack exchange,提问作者Arindam Taak
相关产品推荐
相关产品推荐

