python循环不会在第二个过程中迭代

2024-05-06 06:44:01 发布

您现在位置:Python中文网/ 问答频道 /正文

当我在下面的Python Shell中空闲运行时:

f = open(r"H:\Test\test.csv", "rb")
for line in f:
    print line
    #this works fine

但是,当我第二次运行以下命令时:

^{pr2}$

Tags: csvintest命令forlineopenshell
3条回答

因为您已经浏览了CSV文件,迭代器已经用完了。你需要在第二个循环之前重新打开它。在

您可以从变量中的文件中读取数据,然后可以在脚本中任意次数地迭代该数据。这比来回做seek要好。在

f = open(r"H:\Test\test.csv", "rb")
data = f.readlines()
for line in data:
        print line

for line in data:
        print line

输出:

^{pr2}$

这不起作用,因为您已经在第一次查找文件的末尾。您需要倒带(使用.seek(0))或重新打开文件。在

其他一些提示:

  1. Python有一个非常好的^{}模块。不要尝试自己实现CSV解析,除非这是一个教育练习。在
  2. 您可能希望以'rU'模式打开文件,而不是'rb''rU'是通用换行模式,它将处理来自具有不同行结尾的平台的源文件。在
  3. 在处理文件对象时使用with,因为即使在出现错误的情况下,它也会为您清理句柄。例如:

一。在

with open(r"H:\Test\test.csv", "rU") as f:
    for line in f:
        ...

相关问题 更多 >