读取文件

使用with方法读取文件

1
2
3
4
import tomllib

with open('./config.toml', 'rb') as f:
data = tomllib.load(f)

把打开的文件对象赋值给 f,并不是将以二进制形式只读打开后的文件内容赋值给 f,下面为你详细解释。

文件对象的概念

在 Python 里,当使用 open() 函数打开一个文件时,它会返回一个文件对象。文件对象可以理解为是 Python 程序与实际存储在磁盘上的文件之间的一个 “桥梁” 或者 “通道”,借助这个文件对象,我们可以对文件执行各种操作,像读取文件内容、向文件写入内容等。

**相当于意思就是:**当我们使用open对一个文件打开之后,那就是我们告诉代码,我们已经选中这个文件了哦,把它赋值给f,意思就是:

f代表了这个已经被二进制形式打开的文件

赋值操作的含义

with open('./config.toml', 'rb') as f: 这行代码中的 as f,是把 open() 函数返回的文件对象赋值给变量 f。也就是说,变量 f 现在代表着这个打开的文件,通过 f 可以对文件进行相关操作,而不是把文件的内容赋值给 f

对比文件对象和文件内容

  • 文件对象:它是一个具有多种方法和属性的 Python 对象,能够让我们和文件进行交互。例如,通过文件对象可以调用 read() 方法读取文件内容、write() 方法写入文件内容、close() 方法关闭文件等。
1
2
3
with open('test.txt', 'r') as f:
# f 是文件对象
print(type(f)) # 输出 <class '_io.TextIOWrapper'>
  • 文件内容:指的是存储在文件中的实际数据。要获取文件内容,需要调用文件对象的读取方法,比如 read()readline() 或者 readlines() 等。
1
2
3
4
with open('test.txt', 'r') as f:
# 通过文件对象 f 的 read() 方法读取文件内容
content = f.read()
print(content)

结合 tomllib 的例子

在使用 tomllib.load(f) 时,f 是文件对象,tomllib.load() 函数会通过这个文件对象去读取文件中的内容,并将其解析成 Python 字典。这里传递的是文件对象,而不是文件内容。

1
2
3
4
5
6
import tomllib

with open('config.toml', 'rb') as f:
# f 是文件对象
data = tomllib.load(f) # tomllib.load() 通过文件对象 f 读取并解析文件内容
print(data)

综上所述,把打开的文件对象赋值给 f 后,f 代表着与文件进行交互的接口,而不是文件的实际内容。要获取文件内容,需要使用文件对象提供的读取方法。