文件对象拥有什么?

What does file object holds itself?

参见下面的代码:

import os

file = open("C:/Users/AAYUSH/Desktop/file.txt", 'r' )

print(file)

for i in file:
    print(i,end="")

如果我执行这段代码,我得到以下输出:

<_io.TextIOWrapper name='C:/Users/AAYUSH/Desktop/file.txt' mode='r' encoding='cp1252'>
This is first line!!!
This is second line!!!

我的问题是:如果我执行 print(file) 然后我得到了一个文件的字典,当我在 for loop 的帮助下写的时候我得到了内部数据。

那么这个文件对象到底持有什么?

print(file)

调用 file 对象的 tke __str__ 方法 & 这恰好 return 一个告诉你对象类型的字符串,即 TextIOWrapper 和一些属性namer等。文件内容不在这里,因为文件还没有被读取。

for i in file

调用了文件对象的 __iter__ 方法,实际上 确实 读取文件(一次一行)。 file 对象持有一个指向文件中某个位置的指针 - 这用于从中读取。