2013-10-02 45 views
0
def main(): 
    x = open("textfile.txt", "r") 
    #o = enumerate(x.readlines()) 

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



    x.close 
if __name__ == "__main__": main() 

如果我取消了“O”反对该脚本将不会运行。 有人可以告诉我为什么是这样吗? :python3.3'枚举'函数中断循环? python3

回答

0

你的意思是你没有得到的输出,对不对?

这是因为x.readlines()不是一个生成器 - 它实际上读取x中的所有数据。然后把它提供给o,用一个枚举器包装。

所以当你在X为我做 :

有要读取的没有更多的数据 - 无关。

你可以这样做: 对于我,文本○: 打印 '%d:%s' 的%(I,文本)

这将工作...

+0

但我不改变for循环,当我删除评论,即时通讯仍然阅读对象'x',我不打电话或涉及'o'但没有输出,它是如何影响我的代码?对不起,我是一个noob :) – user2817436

+0

因此,readlines将读取文件中的行直到EOF。 'for i in x'也具有相同的行为 - 整个文件中的迭代器在每次调用之前都会读取一行,直到EOF。如果你做枚举(x.readlines()),它的readlines()部分将读取所有的数据并到达EOF。那么你会'为我在X',但X已经在EOF,所以实际上不会去任何地方。您需要重置该文件(关闭/重新打开,或者执行x.seek(0)将其返回到文件的开头,然后它将起作用。 –