python open函数和with open

open(file, mode=‘r’, buffering=-1, encoding=None)
----返回一个文件对象 file object.
1、mode
在这里插入图片描述

  • open一个文件时,默认是t模式,即文本模式。b:一般用于非文本文件,例如图片的读写。当模式中有‘b’时,就会返回一个不编码的bytes对象
  • w和a都可以在文件不存在时创建一个文件
  • r+模式:读:指针在开头,写:指针在结尾
  • 所有r模式下,文件必须存在。
  • 只要有w,一打开就删除原文件内容.

2、buffering
  默认是-1,使用系统默认缓冲机制。一般不用修改。两个概念:缓冲、缓存。缓冲是程序向存储写文件时开辟的一个内存空间,主要内存I/O速度快远高于外设(硬盘、键鼠等)的速度。使用缓冲可以提高写速度。

3、encoding
  对文件解码或者编码的方法。只有在处理文本文件时才能使用。windows默认encoding是cp936,即GBK。linux默认encoding是utf8。可指定为;utf8或者GBK。不指定则使用系统默认的编码格式。
通常遇到错误如下错误,一般是文件的编码格式与指定的编码格式不符合。

UnicodeDecodeError: 'utf-8' codec can't decode byte 0xd7 in position 0: invalid continuation byte
UnicodeDecodeError: 'gbk' codec can't decode byte 0x97 in position 2: illegal multibyte sequence

4、open()后对象的属性

  • f.encoding:返回编码格式
  • f.closed:文件是否关闭
  • f.name:文件的名称

5、open()后对象的常用方法

  • f.read(size):一次性将文件内容返回成一个str。如果文件过大,慎用,指定size大小,避免内存爆炸。
  • f.readline(size=-1):第一次运行读取文件的第一行,后续每次运行读取下一行,类似生成器,直到遇到EOF结束。每次返回一个str,为每一行数据。
  • f.readlines():读取文件每一行,返回一个list
  • f.write():如果打开的是默认模式即文本文件,写入必须是str对象。可以在结尾加上+‘\n’进行换行。如果指定‘b’,二进制模式。则要是bytes对象

with open

常用句式。这是对open函数的包裹,为了避免文件被打开后由于各种原因没有及时的关闭,释放资源。

with open(filepath, mode, encoding, ...) as f:
    data = f.read()

参考
[1] https://docs.python.org/3/library/functions.html?highlight=open#open
[2] https://docs.python.org/3/library/io.html#module-io

发布了25 篇原创文章 · 获赞 14 · 访问量 1152

猜你喜欢

转载自blog.csdn.net/A_pinkpig/article/details/104763126
今日推荐