我试图从文本文件中迭代一定数量的行。我尝试使用i += 1
和for
循环的不同组合,但它似乎打印出文本文件中的所有行。
def showEntries(amount):
print("---------- SUBSCRIPTIONS ----------\n")
with open('lib/names.txt','r') as names:
for line in names:
for x in range(0,2):
print(line)
print("---------- END OF LIST ----------")
答案 0 :(得分:3)
您可以使用itertools.islice()
。
from itertools import islice
def showEntries(filename, amount):
with open(filename,'r') as names:
for line in islice(names, amount):
print(line)
答案 1 :(得分:2)
我想你想要这样的东西:
for line_no, line in enumerate(names):
if line_no >= amount: # if we've seen enough already
break # stop looping
print(line) # otherwise show the current line
例如:
>>> names = ["John Cleese", "Graham Chapman", "Terry Gilliam", "Eric Idle", "Terry Jones", "Michael Palin"]
>>> for index, name in enumerate(names):
if index >= 3:
break
print(name)
John Cleese
Graham Chapman
Terry Gilliam
有关详细信息,请参阅the docs on enumerate
。
答案 2 :(得分:0)
我相信这就是你想要做的......
一个。获取用户输入的电子邮件地址并将其添加到文件中。暂且不说......在将其写入文件之前,您可能需要执行以下操作... - 确保电子邮件地址是有效地址(使用正则表达式强制执行此操作) - 确保电子邮件地址不存在(您不希望文件中包含重复的地址) 等...
和, 湾打印出订阅者列表中指定数量的结果的打印方式。你需要把你的
这是一个快速示例,说明如何从中读取x行数。我已经使用了很多语法糖......你可以选择不使用..
def printLines(numlines):
i = 0
with open(file) as f:
for line in f:
if i < numlines:
print line
i += 1
else:
break
答案 3 :(得分:0)
您的代码非常接近 - 您只需要让行数的迭代控制循环,而不是文件中的数量:
def showEntries(amount):
print("---------- SUBSCRIPTIONS ----------\n")
with open('lib/names.txt', 'r') as names:
for _ in range(amount):
print(next(file).rstrip())
print("---------- END OF LIST ----------")
为了更加健壮,循环的内部部分可能应该包含在try/except
中,以处理文件包含少于指定行数的情况。