Python3 File
990字约3分钟
2024-08-10
open() 方法
Python open()
方法用于打开一个文件,并返回文件对象
在对文件进行处理过程都需要使用到这个函数,如果该文件无法被打开,会抛出 OSError
注意:使用 open()
方法一定要保证关闭文件对象,即调用 close()
方法
open()
函数常用形式是接收两个参数:文件名(file
)和模式(mode
)
完整的语法格式
open(file, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None)
参数说明:
file
: 必需,文件路径(相对或者绝对路径)mode
: 可选,文件打开模式,模式有三种:r
、w
、a
,分别是读、写、追加buffering
: 设置缓冲encoding
: 一般使用utf8
errors
: 报错级别newline
: 区分换行符closefd
: 传入的file
参数类型opener
: 设置自定义开启器,开启器的返回值必须是一个打开的文件描述符
with open
with open
语法操作文件不需要我们手动关闭文件对象
with open("D:/py-project/test.txt", "r", encoding="UTF-8") as f:
for line in f:
print(f"每一行数据是:{line}")
文件内容读取
test.txt
文本内容
今天天气晴好
但过一会可能会下雨
我现在在想你
但过一会可能会更想
读取指定字节数大小内容
# 打开文件
f = open("D:/py-project/test.txt", "r", encoding="UTF-8")
print(f"读取3个字节的结果:{f.read(3)}")
f.close()
# 读取3个字节的结果:今天天
读取单行内容
# 打开文件
f = open("D:/py-project/test.txt", "r", encoding="UTF-8")
print(f"读取单行内容:{f.readline()}")
f.close()
# 读取单行内容:今天天气晴好
读取全部内容
# 打开文件
f = open("D:/py-project/test.txt", "r", encoding="UTF-8")
print(f"读取全部内容:{f.readlines()}")
f.close()
# 读取全部内容:['今天天气晴好\n', '但过一会可能会下雨\n', '我现在在想你\n', '但过一会可能会更想']
文件内容写入
文件写入的话,如果文件不存在则创建文件,如果文件存在则打开文件,覆盖原有内容写入
# 打开不存在的文件
f = open("D:/py-project/test.txt", "w", encoding="UTF-8")
# write 写入
f.write("今天天气晴好")
# flush 刷新
f.flush()
# close关闭,内置了flush的功能
f.close()
# 打开一个存在的文件
f = open("D:/py-project/test.txt", "w", encoding="UTF-8")
# write 写入,flush 刷新
f.write("今天天气晴好")
f.flush()
# close 关闭
f.close()
文件内容追加
文件内容追加的话,如果文件不存在则创建文件,如果文件存在则打开文件,追加内容写入
# 打开文件,不存在的文件
f = open("D:/py-project/test.txt", "w", encoding="UTF-8")
# write 写入
f.write("太阳不是突然下山的,我想你也懂")
# flush 刷新
f.flush()
# close 关闭
f.close()
# 打开一个存在的文件
f = open("D:/py-project/test.txt", "a", encoding="UTF-8")
# write 写入、flush 刷新
f.write("\n太阳不是突然下山的,我想你也懂")
# close 关闭
f.close()
file 对象
file
对象使用 open
函数来创建,下表列出了 file
对象常用的函数
方法 | 描述 |
---|---|
file.close() | 关闭文件。关闭后文件不能再进行读写操作 |
file.flush() | 刷新文件内部缓冲,直接把内部缓冲区的数据立刻写入文件, 而不是被动的等待输出缓冲区写入 |
file.read([size]) | 从文件读取指定的字节数,如果未给定或为负则读取所有 |
file.readline([size]) | 读取整行,包括 \n 字符 |
file.readlines([sizeint]) | 读取所有行并返回列表,若给定 sizeint>0 ,返回总和大约为 sizeint 字节的行, 实际读取值可能比 sizeint 较大, 因为需要填充缓冲区 |
file.tell() | 返回文件当前位置 |
file.write(str) | 将字符串写入文件,返回的是写入的字符长度 |
file.writelines(sequence) | 向文件写入一个序列字符串列表,如果需要换行则要自己加入每行的换行符 |