十一、文件IO操作

Python的内置库提供了对文件的IO操作。 可以对文件进行打开读写关闭 等操作。

1. 文件读取操作

你必须先用Python内置的open()函数打开一个文件,创建一个file对象,相关的方法才可以调用它进行读写

fileObject = open(file_name ,mode,encoding)
  • filename:一个包含了你要访问的文件名称的字符串值,要求是全路径,如r"e:\xxx.txt"或者"e:\xxx.txt"
  • mode:文件的访问模式,只读,写入,追加等
  • encoding:读取数据的编码格式,只有文本文件时才能加该参数

mode是文件的读写方式:

  • r: 只读模式,不能写入,默认的格式,必须是文件已经存在
  • w: 只写模式,覆盖写入,如果文件不存在,创建文件并写入
  • a: 追加写入,在原来文件内容的基础上,继续写入数据
  • r+: 读写模式,需要文件已存在
  • w+: 读写模式,文件可以不存在,它可以先创建、再读写
  • b: 二进制读写,对非文本文件的读写

打开文件open:

f = open("测试.txt", "r", encoding="UTF-8")
print(type(f))

读取文件:

print("读取15个字节", f.read(15))
print("读取全部内容", f.read())  # 除掉前面读取的15个字节外的所有内容 

读取文件全部行,返回列表 readlines():

f1 = open("测试.txt", "r", encoding="UTF-8")
lines = f1.readlines()
print(type(lines))
print(lines)
for line in lines:
    print(line, end='')

逐行读取 readline():

f2 = open("测试.txt", "r", encoding="UTF-8")
print(f2.readline(), end='')
print(f2.readline(), end='')
print(f2.readline(), end='')
line = f2.readline()
while line:
    print(line, end='')
    line = f2.readline()

简化的for遍历: 打开文件后直接就可以遍历(文件对象)得到每一行的数据

f3 = open("测试.txt", "r", encoding="UTF-8")
for line in f3:
    print(line, end='')

关闭文件对象 结束IO操作:

f.close()
f1.close()
f2.close()
f3.close()

前面读取文件方式,都是需要显示的调用close()方法,关闭文件对象。有时候写代码,忘记关闭,那就麻烦了。

所以python提供了一种自动关闭文件对象的操作方式:with open

with open("测试.txt", "r", encoding="UTF-8") as f:
    for line in f:
        print(line, end='')

执行完后,自动关闭文件对象。

2. 文件写入操作

w模式是写入,通过write方法写入内容。

准备文件: 创建一个测试1.txt文件,写入内容“java流弊”

写入代码操作:

# 打开文件 模式w写入,文件不存在,则自动创建
f = open("测试1.txt", "w", encoding="UTF-8")
# write写入操作 内容写入到内存缓存区
f.write("python流弊")
# flush刷新,内容刷新到硬盘
f.flush()
# close关闭文件 close方法包含了flush功能,所以可以省略flush
f.close()

执行后: 原文件的内容被覆盖。

image-20240725113530063

3. 文件追加操作

a模式,追加内容。写入依然是write方法。

# 打开文件 模式a追加,不存在,则自动创建
f = open("测试2.txt", "a", encoding="UTF-8")
# write写入操作 内容写入到内存缓存区
f.write("fdafa")
# flush刷新,内容刷新到硬盘
f.flush()
# close关闭文件 close方法包含了flush功能,所以可以省略flush
f.close()

执行后: 在原文件的内容后面加上了“fdafa”

最近一次更新 3/20/2025, 7:54:12 AM