Python打开文件和readline/readlines的几个坑

一:编码问题。

我有一个文本:

我爱你
爱死你
你玩我

然后我:

file=open('test','r+',encoding='gbk')

报错:

UnicodeDecodeError: 'gbk' codec can't decode byte 0xa0 in position 8: illegal multibyte sequence

因为:

我的文本用的是utf-8编码,用gbk当然出错了。

哎,那我不写这些行不?直接:

file=open('test','r+')

还是报同样的错误,为什么呢?这是因为windows默认的是gbk编码啊。所以一定要加encoding='utf-8'.

 

二:文件指针问题。

一开始:

file=open('test','r+',encoding='utf-8')
information=file.read()
print(information)
print(type(information))

#file.seek(0,0)

line=file.readline()
print(line)
print(type(line))

#file.seek(0,0)

lines=file.readlines()
print(lines)
print(type(lines))

file.close()


我爱你
爱死你
你玩我
<class 'str'>

<class 'str'>
[]
<class 'list'>

没有加上file.seek()的话,后面的readline和readlines什么都没有。

这是因为在第一个read()之后,光标移到了文件的末尾,再继续读下去当然什么也没有啦!因此我用seek(0,0)来转到文件开头。

关于seek的用法看我的另一篇文章:https://blog.csdn.net/weixin_45850939/article/details/105214665

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值