2022-06-24 约 200 字 预计阅读 1 分钟
1. 文件操作
文件读取指针概念 当python 使用open().read()读取文件时,是按行从上向下读取,当他读取一行时,会给那行设置一个下标(个人理解)来标注当前读取到那行了,在向下读取过程中,下标逐步增加,直至到最后一行,这个下标即为指针.
模式说明
标识符 描述 文件要求 r只读模式, 只允许读取文件内容 文件必须存在 r+读写模式, 可读可写,不分先后,但写入只能写 入到末尾行 文件必须存在 b二进制操作模式,使用场景一般文操作流文件 - w新建模式, 写入新的文件内容 若存在文件,清空文件内容,不存在新建 w+写读模式, 可以边写边读,读是从实际的指针位 置开始,可指定指针到开头读取写入内容 存在文件,清空文件内容,不存在新建 a追加模式, 可写但不允许读,只允许从最后一 行开始追加 存在直接操作,不存在新建 a+追加读模式, 可读可写,写只能写入到末尾行 存在直接操作,不存在新建 U表示在读取文件时候,将\r\n统一转成\n, 使用场景一般是在linux上读取win的文件 -
1.1. 基础语法
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. 常规操作
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.3. 文件读取 with语句
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 ())