0

Python学习者。所以请原谅我。我正在关注:http ://docs.python.org/2/tutorial/inputoutput.html#reading-and-writing-files

我想读一个文件;这是我的文件:

# cat test 
line1 word1
line2 word2
line3 word3
line4 word4

这是我的代码:

>>> f = open ('test')
>>> for line in f:
...     print f
... 
<open file 'test', mode 'r' at 0xb7729180>
<open file 'test', mode 'r' at 0xb7729180>
<open file 'test', mode 'r' at 0xb7729180>
<open file 'test', mode 'r' at 0xb7729180>

我如何以及为什么超过输出?我希望它能每行打印每一行。我在这里想念什么。查看上面提到的链接,我的语法似乎还可以,但输出不是

谢谢。

4

5 回答 5

3

在迭代期间,您正在打印f而不是line变量。

>>> f = open ('test')
>>> for line in f: 
...        print line
于 2012-11-06T07:13:38.813 回答
2

您正在打印文件句柄,将print f替换为print line

f = open ('test')
for line in f:
    print line
于 2012-11-06T07:12:07.237 回答
2
for line in open('test')
    print line
于 2012-11-06T07:14:21.870 回答
0

您必须使用 readline 函数读取行。然后它将每一行变成一个列表值。那是你可以做你的 for 声明的时候。

于 2012-11-06T07:15:44.177 回答
0

for line in f:

这意味着'遍历 f 的内容,将每个项目分配给名为'line'的变量'。不是相反。f 不会改变..这是您从中获取数据的内容,而不是您分配给它的变量。

也就是说,我看到的另一个答案..来自名字以'D'开头的人..是正确的:你想要print (line),而不是print(f)。我用 () 写它是因为这是一个好习惯,它使你的代码与 Python 2.x 和 Python 3.x 兼容。

于 2012-11-06T07:17:08.050 回答