19. 读写文本文件

在Python 2.x和Python 3.x中,字符串的语义发生了变化:

Python2Python3
strbytes
unicodestr

要求:某文本文件编码格式已知(如 UTF-8,GBK,BIG5),在Python 2.x和Python 3.x 中分别读写该文件。

Python 2.x:写入文件前对unicode编码,读入文件后对字节进行解码。

Python 3.x:open()函数默认指定t以文本模式,endcoding指定编码格式。


  • Python 2.x写入文件:
>>> s = u'我爱Python'

>>> type(s)
<type 'unicode'>

>>> f = open('a.txt', 'w')

>>> f.write(s.encode('utf8'))               #uft-8编码

>>> f.flush()
# cat a.txt
我爱Python
  • Python 2.x读取文件:
>>> f = open('a.txt', 'r')

>>> txt = f.read()

>>> type(txt)
<type 'str'>

>>> txt
'\xe6\x88\x91\xe7\x88\xb1Python'

>>> txt.decode('utf8')              #utf-8解码
u'\u6211\u7231Python'

>>> print txt.decode('utf8')
我爱Python

  • Python 3.x写入文件:
>>> s = '我爱Pyhon'

>>> type(s)
<class 'str'>

>>> f = open('b.txt', 'w', encoding='gbk')              #默认以文本模式打开,'wt'可省略为'w';默认encoding='utf8'

>>> f.write(s)
7

>>> f.flush()
  • Python 3.x读取文件:
>>> f = open('b.txt', 'r', encoding='gbk')

>>> f.read()
'我爱Pyhon'

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值