Python报错IOError-[Errno-22]-invalid-mode-(w)-or-filename

本文解决了Python在使用Pycharm环境下文件写入时出现的IOError问题,详细介绍了错误原因及解决方案,涉及到Python字符串编码与Unicode基础知识。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

欢迎来博主个人博客做客?https://www.xbbdbb.top/

Python版本为2.7.16,IDE为Pycharm,报错代码如下:

# 文件写入

with open(filename, "w") as f:    
    f.write(html)

报错内容如下:

Traceback (most recent call last):
    
  File "D:/Pycharm/WorkSpace/spider/Tieba.py", line 55, in <module>
    tiebaSpider(fullurl, beginPage, endPage)
  File "D:/Pycharm/WorkSpace/spider/Tieba.py", line 44, in tiebaSpider
    writePage(html, filename)
  File "D:/Pycharm/WorkSpace/spider/Tieba.py", line 26, in writePage
    with open(filename, "w") as f:
        
  IOError: [Errno 22] invalid mode ('w') or filename: '\xe7\xac\xac1\xe9\xa1\xb5.html'

将报错代码修改为如下:

# 文件写入

f = open(filename.decode('utf-8'), 'w')
f.write(html)

即可成功运行,因为Python中的字符串大概分为strUnicode两种形式,其中str常用的编码类型为utf-8,gb2312,gbk等,而Python使用Unicode作为编码的基础类型,在open(filename, ‘w’)这个方法中,filename这个参数必须是Unicode编码的参数才可正常运行。

欢迎来博主个人博客做客?https://www.xbbdbb.top/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值