笔记--python的文档读写

文档的读写(r、rb)

读写文件都是使用io模块的open()函数,传入文件路径和标识符,由于在WINDOWS路径分隔符是’’,与python的转义符一致,传入路径的时候需要使用r’'强制为字符串。

读文档(r):

#把文本文档读取到内存中,用字符串对象表示,当文件不存在时,将报错
>>> f = open('/Users/易小白/test.txt', 'r',encoding='utf-8')
#关闭文档,读写文档后一定要关闭文档
>>>f.close()

'r’默认encoding=‘utf-8’,所以上面的代码中可以不输入encoding.

读取二进制文档(rb):

主要用于读取二进制编码的文件,如图片、视频等等

#将二进制的文档读取到内存中,用字符串对象表示
>>> f = open('/Users/michael/test.txt', 'rb')
#这里就不需要编码了,因为rb代表着读取二进制编码的文件
>>>f.close()#同样读取后要关闭

写文件(w、wb):

#写入一个test.txt文档,同样可以指定编码格式
>>> f = open('/Users/易小白/test.txt', 'w',encoding='utf-8')
#在f文件中,写入内容
>>> f.write('Hello, world!')
#关闭文档
>>> f.close()

同样,可以用’wb’写入二进制文档.
为了避免出现忘记关闭文件,导致内存溢出的情况,python提供了一个可以读\写完文件自动关闭的函数with open(),用法跟open一样,只不过在open前面加了一个with。

在内存中读\写字符串(StringIO)

很多时候,我们不需要将字符串写入文档中,只需要暂存,这是我们就可以使用stringIO()函数,将字符暂存在内存中,当需要读取我们暂存的字符串时,就可以使用getvalue方法读取内存中的字符串:

>>> from io import StringIO
>>> f = StringIO('Hello!\nHi!\nGoodbye!')
>>> while True:
		s = f.readline()
        if s == '':
         	break
		print(s.strip())#python每执行一次print默认打印一个换行,所以我们需要将f中的\n跳过打印
#运行结果:		
Hello!
Hi!
Goodbye!

问题来了,我们可以直接定义一个变量,存入我们想要的数据就可以了,为啥还用这么复杂的去做。原因在于,这样做不用分配内存,用完就释放了,可以减少程序的内存占用率。

在内存中读\写编码数据(BytesIO)

写入的是编码,而不是str:

>>> from io import BytesIO
>>> f = BytesIO()
>>> f.write('中文'.encode('utf-8'))
6
>>> print(f.getvalue())
b'\xe4\xb8\xad\xe6\x96\x87'
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值