python学习笔记之--文件操作

2022-03-06  本文已影响0人  itsenlin

文件

概念

在python中文件的概念与*nix系统很类似,文件只是连续的字节序列。

内建函数

open(file, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None)

返回一个file类型对象,参数很多,但是常用的有三个filemodeencoding

文件操作模式

文件操作模式与C语言类似可以参考fopent()接口
基本模式如下:

模式 说明
r 以读模式打开,指针指向文件开头
wx 以写模式打开:如果文件已存在x模式会报错,而w模式会清空原有内容重新写入;如果文件不存在,两种模式都会新建一个文件
a 追加模式:如果该文件已存在,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入
b 二进制模式:不能单独使用,需要放在其他模式后面使用
+ 可读可写模式:不能单独使用,需要放在其他模式后面使用

还有一些组合模式

模式 说明
r+w+a+ 以读写模式打开文件。区别:文件不存在时r+会报错,w+a+会新建;文件存在时a+指针指向文件结尾,r+w+指针指向文件开头
rb+wb+ab+ 以二进制读写模式打开文件。区别:文件不存在时rb+会报错,wb+ab+会新建;文件存在时ab+指向文件结尾,wb+rb+指向文件开头
rb 以二进制只读模式打开,指针会指向文件开头
wbab 以二进制只写模式打开,区别:wb模式指针指向文件开头;ab模式指针指向文件结尾

文件操作

文件操作定式

文件操作一般是三个步骤

  1. open接口打开一个文件,返回一个file对象
  2. 通过file对象对文件进行操作
  3. 调用file对象的close接口关闭文件

第一步前面已经学习,这里学习下后面两步

文件对象

open接口返回值是一个file对象,文件的操作动作都需要依赖这个file对象;可以分为以下四类

接口 说明
file.read([size]) 最多读取size个字节的数据放到字符串中返回,size不提供或者<0(默认-1),文件将读取到末尾
file.readline([size]) 读取一行数据(包括行结束符),参数类似read接口
file.readlines([size]) 读取文件所有行,以字符串列表形式返回;若给定size>0,返回总和大约为size字节的行, 实际读取值可能比 size较大, 因为需要填充缓冲区
接口 说明
file.write(str) 将字符串写入文件,返回的是写入的字符长度。
file.writelines(list) 向文件写入一个序列字符串列表,如果需要换行则要自己加入每行的换行符
file.flush() 刷新文件内部缓冲,直接把内部缓冲区的数据立刻写入文件, 而不是被动的等待输出缓冲区写入。
接口 说明
file.tell() 返回文件指针的位置
file.seek(offset[, whence]) 移动文件读取指针到指定位置;offset表示偏移量,whence表示偏移的起始位置:0 代表从文件开头(默认);1 代表当前位置;2 代表文件末尾。
接口 说明
file.close() 关闭文件。关闭后文件不能再进行读写操作。

实例

try:
    f = open("test.txt")
    for line in f.readlines():
        print(line)
except IOError as err:
    print(f"find error when operate file: {err}")
else:
    f.close()

例子中当文件存在时,打印文件内容;当文件不存在时,会打印find error when operate file: <具体的错误信息>

python语言中增加了一个上下文管理(with语句)简化了这种文件操作,不需要使用异常处理,上面例子可以改造成如下:

with open("test.txt") as f:
    for line in f:
        print(line)

深入

标准文件

类似C语言,程序运行过程中有三个标准文件默认可用:

在python中使用时,需要依赖sys模块:sys.stdinsys.stdoutsys.stderr

文件系统操作

对于文件系统操作,像目录操作、文件权限操作、文件路径操作等在python的os模块以及os.path模块中

上一篇下一篇

猜你喜欢

热点阅读