【发布时间】:2016-11-01 12:14:54
【问题描述】:
我注意到,如果我对打开的文件进行迭代,在不“读取”的情况下迭代它会快得多。
即
l = open('file','r')
for line in l:
pass (or code)
比
快很多l = open('file','r')
for line in l.read() / l.readlines():
pass (or code)
第二个循环将花费大约 1.5 倍的时间(我在完全相同的文件上使用 timeit,结果是 0.442 对 0.660),并且会给出相同的结果。
那么 - 我什么时候应该使用 .read() 或 .readlines()?
因为我总是需要遍历我正在阅读的文件,并且在艰难地学习了 .read() 在大数据上的速度有多慢之后——我似乎无法想象再次使用它。
【问题讨论】:
-
请澄清。
timeit是read还是readlines的测量值?我希望read循环需要更长的时间,因为它返回一个字符串,所以迭代它会逐个字符地进行。如果您的文件平均每行有 100 个字符,那么for line in l.read()循环中的代码将执行 100 倍于for line in l:循环中的代码。 -
它也适用于 readlines()。令人惊讶的是 read() 或 readlines() 之间几乎没有时间差......