Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Loops ';枚举';函数中断循环?蟒蛇3_Loops_Enumerate - Fatal编程技术网

Loops ';枚举';函数中断循环?蟒蛇3

Loops ';枚举';函数中断循环?蟒蛇3,loops,enumerate,Loops,Enumerate,如果我取消对“o”对象的注释,此脚本将不会运行。 有人能告诉我为什么吗? :python3.3你的意思是你没有得到输出,对吗 这是因为x.readlines()不是生成器-它实际上从x读取所有数据。然后把它交给o,用一个枚举器包装 所以当你这么做的时候 对于x中的i: 没有更多的数据可读取-无事可做 你可以做: 对于i,o中的文本: 打印“%d:%s%”(i,文本) 这就行了…但是当我删除注释时,我没有改变for循环,我仍然在读取对象“x”,我没有调用或涉及“o”,但是没有输出,这对我的代码有什

如果我取消对“o”对象的注释,此脚本将不会运行。 有人能告诉我为什么吗?
:python3.3

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

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

所以当你这么做的时候 对于x中的i:

没有更多的数据可读取-无事可做

你可以做: 对于i,o中的文本: 打印“%d:%s%”(i,文本)


这就行了…

但是当我删除注释时,我没有改变for循环,我仍然在读取对象“x”,我没有调用或涉及“o”,但是没有输出,这对我的代码有什么影响?对不起,我是noob:)所以,readlines将从文件中读取行,直到EOF对于x'中的i也有相同的行为-文件中的迭代器将在每次调用中读取一行,直到EOF。如果执行枚举(x.readlines()),则其中的readlines()部分将读取所有数据并到达EOF。然后你做“x中的i”,但是x已经在EOF,所以实际上没有任何结果。您需要重置文件(关闭/重新打开,或执行x.seek(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()