文件操作

警告
本文最后更新于 2022-06-24,文中内容可能已过时。

1. 文件操作

  • 文件读取指针概念
    python 使用open().read()读取文件时,是按行从上向下读取,当他读取一行时,会给那行设置一个下标(个人理解)来标注当前读取到那行了,在向下读取过程中,下标逐步增加,直至到最后一行,这个下标即为指针.

  • 模式说明

    标识符 描述 文件要求
    r 只读模式, 只允许读取文件内容 文件必须存在
    r+ 读写模式, 可读可写,不分先后,但写入只能写
    入到末尾行
    文件必须存在
    b 二进制操作模式,使用场景一般文操作流文件 -
    w 新建模式, 写入新的文件内容 若存在文件,清空文件内容,不存在新建
    w+ 写读模式, 可以边写边读,读是从实际的指针位
    置开始,可指定指针到开头读取写入内容
    存在文件,清空文件内容,不存在新建
    a 追加模式, 可写但不允许读,只允许从最后一
    行开始追加
    存在直接操作,不存在新建
    a+ 追加读模式, 可读可写,写只能写入到末尾行 存在直接操作,不存在新建
    U 表示在读取文件时候,将\r\n统一转成\n,
    使用场景一般是在linux上读取win的文件
    -
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16

# 打开为文件对象, 默认 mode = "r", encoding="系统编码" 
f = open("file.md") 

# 读取文件内容
data = f.read()

f1 = open("file1.md","w",encoding="utf-8")
# 写入内容到文件 
f1.write("hello python")

f2 = open("file1.md","a",encoding="utf-8")
f2.write("hello python2")

# 文件流关闭 在持续执行程序中必须在文件操作完毕后进行关闭
f.close()
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
f = open("file1.md","r",encoding="utf-8")
# 打印一行 并将指针向下偏移一次
print(f.readline())

# 读取所有行类容,将其转换为以\n为结尾的列表,使用循环遍历每一行
print(f.readlines())

# 打印已读取的光标位置(列)从0开始,字符读取,字节计数(末尾\n)
print(f.tell())

# 读取3个字符 
print(f.read(3))

# 设置上一读取行指针位置
f.seek(2)

#打印文件编码
print(f.encoding)

# 判断文件是否是一个可读取的文件
print(f.seekable())

# 在文件写入后,清空缓存区内容到文件当中
f.flush()

# 在文件的追加模式下,从文件开头(0指针)位置开始截断并重新写入指定长度的字符串
f.truncate(6)
1
2
3
4
5
6
7
8
9
with open("file1.md","r",encoding="utf-8") as f:
    for line in f:
        print(line)

# with 语句也可以同时打开多个文件 
with open("file1.md","r",encoding="utf-8") as f1,\
     open("file2.md","r",encoding="utf-8") as f2:
    print(f1.readlines())
    print(f2.readlines())