当我在Python IDLE Shell中运行以下命令时:
f = open(r"H:\Test\test.csv", "rb")
for line in f:
print line
#this works fine
然而,当我第二次运行以下内容时:
for line in f:
print line
#this does nothing
答案 0 :(得分:4)
这不起作用,因为您已经第一次寻找到文件的末尾。您需要快退(使用.seek(0)
)或重新打开文件。
其他一些指示:
csv
模块。除非这样做是为了教育,否则不要尝试自己实施CSV解析。'rU'
模式打开文件,而不是'rb'
。 'rU'
是通用换行模式,它将处理来自具有不同行结尾的平台的源文件。with
,因为即使出现错误,它也会为您清理句柄。例如:
with open(r"H:\Test\test.csv", "rU") as f:
for line in f:
...
答案 1 :(得分:3)
你可以从变量中读取文件中的数据,然后你就可以迭代这些数据了。您希望在脚本中使用的次数。这比来回做seek
要好。
f = open(r"H:\Test\test.csv", "rb")
data = f.readlines()
for line in data:
print line
for line in data:
print line
输出:
# This is test.csv
Line1,This is line 1, there are, some numbers here,321423423
Line2,This is line2 , there are some characters here,sdfdsfdsf
# This is test.csv
Line1,This is line 1, there are, some numbers here,321423423
Line2,This is line2 , there are some characters here,sdfdsfdsf
答案 2 :(得分:2)
因为你已经完成了CSV文件,并且迭代器已经用完了。你需要在第二次循环之前重新打开它。