例如,我需要通过调用readline
10次来读取文件。
with open("input") as input_file:
for i in range(10):
line = input_file.readline()
# Process the line here
这是一种使用range
来控制循环次数的常用技巧。唯一的缺点是:有一个未使用的i
变量。
这是我从Python中获得的最好的吗?有更好的想法吗?
P.S。在Ruby中我们可以做到:
3.times do
puts "This will be printed 3 times"
end
这是优雅的,非常清楚地表达了意图。
答案 0 :(得分:10)
这几乎是循环特定次数的最佳选择。
一个常见的习语是改为for _ in ...
,将_
表示为一种占位符。
答案 1 :(得分:5)
使用islice
itertools
from itertools import islice
with open("input", 'r') as input_file:
for line in islice(input_file, 10):
#process line
由于您可以直接迭代文件行,因此无需调用input_file.readline()
请参阅itertools.islice
答案 2 :(得分:1)
python中没有等效的构造。
(顺便说一句,即使在Ruby示例中,仍然需要一个计数器!语言只是隐藏它。解释器也可能生成字节码,这些行重复多次,而不是循环,但这不太可能。)
答案 3 :(得分:0)
您提供的解决方案几乎是最好的解决方案。
但是,如果您真的想要,可以使用生成器和iterslice将其抽象出来,这样您就不需要查看未使用的变量了:
import itertools
def take(iterable, amount):
return itertools.islice(iterable, 0, amount)
with open("inputfile.txt") as file:
for line in take(file.readlines(), 3):
print line