Python学习笔记——open()函数详解、文件对象函数

open(file, mode = ‘r’, buffering = -1, encoding = None, errors = None, newline = None, closefd = True, opener = None)
file: 文件路径(相对或者绝对路径)。(必须)
mode: 文件打开模式 (默认’rt’模式)
buffering: 设置缓冲策略
encoding: 一般使用utf8,不同平台的 ecoding 参数值不同, Windows 的默认为 cp936( GBK 编码)
errors: 报错级别
newline: 区分换行符
closefd: 传入的file参数类型

mode参数:

模式描述
t文本模式(默认)
x写模式,新建文件,如果文件已存在则会报错
+打开文件进行更新(可读可写)
b二进制模式
r只读模式 ,文件指针在文件的开头(默认)
r+读写模式,文件指针在文件的开头,写入内容不会覆盖原文本
rb以二进制格式、只读模式打开文件,一般用于非文本文件:图片、音频等
rb+以二进制格式、读写模式打开文件,文件指针在文件的开头
w只写模式,如果文件已存在则打开文件,且原有内容会被删除,从开头开始编辑。如果文件不存在,则创建新文件。不能使用 .read() 方法
w+读写模式。如果文件已存在则打开文件,且原有内容会被删除,从开头开始编辑;如果文件不存在,创建新文件。可以使用 .read() 方法
wb以二进制格式、只读模式打开文件。如果文件已存在则打开文件,且原有内容会被删除,从开头开始编辑。如果文件不存在,创建新文件。一般用于非文本文件:图片、音频等。
wb+以二进制格式、读写模式打开文件。如果文件已存在则打开文件,且原有内容会被删除,从开头开始编辑;如果文件不存在,创建新文件。一般用于非文本文件:图片、音频等
a追加模式,对文件只有写入权限。如果文件已存在,文件指针在文件的结尾,新的内容将会被写入到已有内容之后;如果文件不存在,创建新文件进行写入。不能使用 .read()方法
a+读写模式,对文件内容进行追加。如果文件已存在,文件指针在文件的结尾,对文件进行追加内容;如果文件不存在,创建新文件用于读写。可以使用 .read() 方法
ab以二进制格式、追加模式打开文件。如果文件已存在,文件指针在文件的结尾,新的内容将会被写入到已有内容之后;如果文件不存在,创建新文件进行写入。
ab+以二进制格式、读写模式打开文件,对文件内容进行追加。如果文件已存在,文件指针在文件的结尾,新的内容将会被写入到已有内容之后;如果文件不存在,创建新文件进行写入。

buffering参数:设置缓冲策略。如果 buffing 参数的值为 0(或者 False),则表示打开指定文件时不使用缓冲区;如果 buffing 参数值为大于 1 的整数,该整数用于指定缓冲区的大小(单位是字节);如果 buffing 参数的值为负数,则代表使用默认的缓冲区大小。

errors:处理编码和解码错误。python中着有注册的错误处理,还有多种标准错误处理程序

newline参数:控制通用换行符模式的工作原理。可以是None、’’、’\n’、’\r’、’\r\n’,工作原理:
1、从流读取输入:如果newline为None,则启用通用换行符模式。输入中的行可以以’\n’,’\r’或’\r\n’结尾,它们在返回给调用者之前被转换成’\n’。如果是’’,则启用通用换行符模式,但行结尾将返回给调用者而不会转换。如果是任何其它合法值,则输入行仅由给定字符串终止,并且行结尾被返回给调用者而不会转换。
2、将输出写入流:如果newline为None,则写入的任何’\n’字符都将转换为系统默认行分隔符os.linesep。如果newline是’‘或’\n’,则不会进行转换。如果newline是任何其他合法值,写入的任何’\n’字符都将转换为给定字符串。

closefd参数:如果是False并且给出了文件描述器而不是文件名,则当文件关闭时,基本文件描述器将保持打开。如果给定文件名,则closefd必须为True(默认值),否则将产生错误。

file 对象使用 open 函数来创建, file 对象常用的函数、属性:
file.name:返回文件的名称
file.closed:判断文件是否己经关闭
file.mode:返回文件采用的打开模式(mode的参数)
file.encoding:返回文件打开使用的编码格式;
file.tell():返回文件指针当前的位置
file.flush():用来刷新缓冲区的,即将缓冲区中的数据立刻写入文件,同时清空缓冲区,不需要是被动的等待输出缓冲区写入。一般情况下,文件关闭后会自动刷新缓冲区,但有时需要在关闭前刷新它,这时就可以使用 flush() 方法。

file.seek(offset, whence):移动文件读取指针到指定位置
offset :开始的偏移量,代表需要移动偏移的字节数,如果是负数表示从倒数第几位开始。
whence:可选,默认值为 0。给 offset 定义一个参数,表示要从哪个位置开始偏移:0 代表从文件开头开始算起,1 代表从当前位置开始算起,2 代表从文件末尾算起。

>>> f = open('file', 'rb+')
>>> f.write(b'0123456789abcdef')
16
>>> f.seek(7)      # 移动到文件的第八个字节
7
>>> f.read(1)
b'7'
>>> f.seek(-2, 2)  # 移动到文件倒数第三个字节
13
>>> f.read(1)
b'e'

errors、newline、closefd参数参考:https://www.cnblogs.com/IMWU/p/10947262.html

  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值