python3-open

1、介绍

python3中,可以通过内建模块的open函数,进行文件的读写,以及创建文件。

2、函数

open(file, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None)
  • file: 必需,文件路径(相对或者绝对路径)。
  • mode: 可选,文件打开模式
  • buffering: 设置缓冲
  • encoding: 对于文本文件,需要设置正确的编码,一般使用utf8。对于字节文件,不能设置,否则会报错
  • errors: 报错级别
  • newline: 区分换行符
  • closefd: 传入的file参数类型
  • opener
  • 函数的返回对象类型:
<class '_io.TextIOWrapper'>

3、mode参数

(1)r

  • 表示read,即只读模式,mode参数默认值
  • 文件的指针将会放在文件的开头

(2)w

  • 表示write,即只写模式
  • 如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。

(3)r+

  • 打开一个文件用于读写。文件指针将会放在文件的开头。

(4)w+

打开一个文件用于读写。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。

  • 因此,如果在打开的时候去读取内容,是空的

(5)类似的,字节文件对应四个模式:rb、wb、rb+和wb+

(6)a、a+、ab、ab+表示追加模式

4、文件操作

基于open函数返回对象,调用其方法。按字节读和写、按字符读和写,这四者之间和\r\n有着较复杂的关系。

(1)模式

f = open(r'G:\python-test\home\a.txt')
print(f.mode)
f.close()
  • mode属性:文件打开模式。默认为r

(2)指定读

def read(self, n: int = -1)
  • 默认为-1,如果为正数,表示读取指针后的几个字符。如果为负数,表示读取指针之后的所有字符.
  • 返回的是字符串

(3)按行读

def readline(self, limit: int = -1)
  • 默认为-1,如果为正数,表示读取指针后的几行。如果为负数,表示读取指针之后的所有行.
  • 返回的是字符串
with open('a.txt', 'r', encoding='utf-8') as f:
    i = 0
    s = f.readline()
    while s:
        print(i, '---', s)
        i += 1
        s = f.readline()
  • 按行读,又分为按读字节和读字符
  • 读字符,则每一行的末尾都是换行符,会包含在读取的变量中,除了读取结束的最后一行
  • 读字节,则每一行的末尾都是\n,如果以\n结尾,则最后一个读取行变量仍然为\n

(4)多行读

def readlines(self, hint: int = -1)
  • 默认为-1,如果为正数,表示读取指针后的几行。如果为负数,表示读取指针之后的所有行.
  • 返回的是列表,一行为一个字符串,为一个列表元素

(5)字符串写入

def write(self, s: AnyStr)
  • 参数必须是字符串
  • 需要注意,如果指针在末尾,这里的write实际就是在指针之后进行追加。
  • 如果指针在中间或者开头,则是对指针之后的n格字符进行覆盖,如果写入的字符超过指针之后原有的字符,则会扩展

(6)多行写入

(7)设置指针位置

def seek(self, offset: int, whence: int = 0) 

(8)清除

def truncate(self, size: int = None)
  • 默认清除指针之后的所有字符,当size指定时,即清除指针后的size个字符

(9)关闭

def close(self) -> None
posted @ 2023-04-17 09:54  挖洞404  阅读(140)  评论(0编辑  收藏  举报