我有一个与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;。
感谢您提供的所有解释。
答案 0 :(得分:2)
由于Python中的文件对象是iterable,因此您可以对其进行迭代以逐行获取文件行。
但是文件不是集合而是对象 - 在输出集合时,您不会通过打印来看到所有行
l = ["line1", "line2"]
print l
但你会看到实体描述
<open file 'path_to_the_file', mode 'r' at 0x0245D020>