什么是for循环对文件对象做什么?

时间:2016-10-18 08:18:00

标签: python python-2.7

我有一个与Python for循环和文件相关的问题。

在此代码中:

file = raw_input("input a text file ")

f = open(file) #  creates a file object of file

for line in f:
    # prints each line in the file
    print line 



print f

# prints <open file 'MVL_ref.txt', mode 'r' at 0x0267D230>

print f.read() # same output of the for-cycle
print f.readline() # same output of the for-cycle

for循环正在打印我文本中的每一行 文件。但是,如果我打印文件对象,我会得到完全不同的东西。 这让我感到困惑,因为我希望我必须使用类似的东西:

for line in f.read():
    print line 

但当然情况并非如此。 如果我在没有for循环的情况下使用read或readline方法,我会获得相同的for循环输出。

for循环是否在文件对象上默认调用read()或readline()?我正在学习如何使用python进行编码,但是我不知道代码正在做什么以及#34;在我的背后&#34;。

感谢您提供的所有解释。

1 个答案:

答案 0 :(得分:2)

由于Python中的文件对象是iterable,因此您可以对其进行迭代以逐行获取文件行。

但是文件不是集合而是对象 - 在输出集合时,您不会通过打印来看到所有行

l = ["line1", "line2"]
print l 

但你会看到实体描述

<open file 'path_to_the_file', mode 'r' at 0x0245D020>