Python 语言及其应用 Chapter_6_Note 2 用write()写文本文件

使用write()写文本文件
下面这首作为
源数据:
>>> poem = '''There was a young lady named Bright,
... Whose speed was far faster than light;
... She started one day
... In a relative way,
... And returned on the previous night.'''
>>> len(poem)
150
以下代码将整首诗写到文件'relativity' 中:
>>> fout = open('relativity', 'wt')
>>> fout.write(poem)
150
>>> fout.close()
函数write() 返回写入文件的字节数。和print() 一样,它没有增加空格或者换行符。同
样,你也可以在一个文本文件中使用print():
>>> fout = open('relativity', 'wt')
>>> print(poem, file=fout)

>>> fout.close()

这就产生了一个问题:到底是使用write() 还是print() ? print() 默认会在每个参数后
面添加空格,在每行结束处添加换行。
在之前的例子中,它在文件relativity 中默认添
加了一个换行
。为了使print() 与write() 有同样的输出,传入下面两个参数。
• sep 分隔符:默认是一个空格' '
• end 结束字符:默认是一个换行符'\n'
除非自定义参数,否则print() 会使用默认参数。在这里,我们通过空字符串替换print()
添加的所有多余输出:
>>> fout = open('relativity', 'wt')
>>> print(poem, file=fout, sep='', end='')
>>> fout.close()
如果源字符串非常大,可以将数据分块,直到所有字符被写入:
>>> fout = open('relativity', 'wt')
>>> size = len(poem)
>>> offset = 0                              #这句话的意思是,起始位置从0开始写
>>> chunk = 100                        #以100字节大小为分隔界限
>>> while True:
... if offset > size:
... break
... fout.write(poem[offset:offset+chunk])       #第一次循环的时候,从0开始,写100,第二次开始循环的时候,从100开始写,剩下的。
... offset += chunk
...
100
50
>>> fout.close()

第一次写入100 个字符,然后写入剩下的50 个字符。
如果'relativity' 文件已经存在,使用模式x 可以避免重写文件:
>>> fout = open('relativity', 'xt')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
FileExistsError: [Errno 17] File exists: 'relativity'
可以加入一个异常处理:
>>> try:
... fout = open('relativity', 'xt')
... fout.write('stomp stomp stomp')
... except FileExistsError:
... print('relativity already exists!. That was a close one.')
...
relativity already exists!. That was a close one.


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值