2017-05-05 58 views
2
handle = open('full path/file name.txt') 

file = handle.read() 
print file 

for line in handle: 
    print line 
  1. 打印文件打印正确
  2. 打印线不返回任何东西。没有错误报告。我在这里做错了什么?
+4

工作,你以后'.read'你的文件” re已经在最后,所以'handle'中没有更多'line's。 – jonrsharpe

回答

0

您需要从读取的数据写入,句柄是一个文件对象。

for line in file: 
    print(line) 
+0

这会给每个*字符*,而不是每一行。 o请注意,triple-backtick代码隔离用于GitHub-flavor markdown,它不支持。 – jonrsharpe

+0

file = handle.readlines()...我没有完全阅读人员代码。好的产品 –

1

一旦你读取文件(handle.read())文件到达终点,所以,试图再次重复它的时候,它没有任何关系提供了。

如果要再次使用使用它的内容,你可以将它们存储在第一读取和使用存储的内容每一次,或重置使用文件的开头寻求:

handle.seek(0) 
0

的首先要注意的是,你现在的for循环不会让你找到你想要的行为。您需要有file = handle.readlines()而不是.read()。否则,它会将每个字符打印在新行中,而不是每行。 (请注意,handle.readlines()返回一个列表,所以打印(文件)行现在将打印该列表。

还请注意,使用.read()文件看完之后,你就需要运行handle.seek(0)能够从打印重新备案,否则您将不会收到输出,作为“读者”是在文件的结尾。

+1

*“你应该从文件中读取。”* - 否,因为(尽管名称)它不是文件,它是*内容*作为字符串。你*可以*遍历文件句柄。 – jonrsharpe

+0

这是真的。编辑,谢谢! – Windmill

0

下面的代码应为2.7

handle = open('full path/file name.txt') file = handle.read() 
handle.seek(0) print file 

for line in handle: 
    print line