【问题标题】:Read two lines at a time from a txt file [closed]从txt文件一次读取两行[关闭]
【发布时间】:2021-12-28 00:43:59
【问题描述】:

下面显示的第一段代码从 txt 文件中读取一行

它一次读取一行,但我想要实现的是让它一次读取两行。

我尝试调用该函数两次,但它所做的只是读取同一行并打印两次。

我尝试使用 itertools 和 islice 函数,但它似乎不起作用,我遗漏了一些东西。

抱歉,这是 8 天 Python 经验的结果????。

如何让它一次读取 N 行?

file = open('textfile.txt', 'r')
filelines = file.readlines()
file.close()

for line in filelines:
    if line != '\n':
        api.update_status(line)
...

尝试使用 islice() 解决问题。

from itertools import islice

with open('file.txt') as file:

  while True:

    next_n_lines = islice(file, 2)

    if not next_n_lines:

        break

【问题讨论】:

  • 调用readline()获取第一行,再次调用获取第二行。
  • 请将您的尝试添加到您的问题中。
  • 请提供您的代码示例,向我们展示您如何阅读第一行,并且有人应该能够告诉您如何阅读第二行
  • 感谢cmets,我已经编辑了问题

标签: python python-3.x itertools readline readlines


【解决方案1】:

您可以使用 enumerate 遍历文件以获取行号,并将偶数行存储在临时变量中,然后移动到下一个奇数行。在奇数行上,您可以访问前一行以及当前行。

with open('somefile.txt', 'r') as f:
    lastline = ''
    for line_no, line in enumerate(f):
        if line_no % 2 == 0: #even number lines (0, 2, 4 ...) go to `lastline`
            lastline = line
            continue #jump back to the loop for the next line
        print("here's two lines for ya")
        print(lastline)
        print(line)

【讨论】:

  • 非常感谢 Aaron 兄弟,它很有魅力,我已经尝试并寻找了将近 3 个小时的方法,谢谢你
  • @MrStrange_M.S 这只是一种选择。探索 cmets 中提到的其他一些选项可能是一次很好的学习经历。例如,如果您只是简单地迭代 f,则可以在 for 循环体中调用 next(f) 以获取下一个值,然后再返回循环顶部。值得注意的是,该调用可能会引发 StopIteration 异常,您必须使用 try: except: 块来捕获它。
  • 是的,我肯定会的,我真的很抱歉我不能为你的答案投票,因为我仍然没有 15 个声誉可以投票给答案
  • 是的,兄弟我添加了一个尝试:除了:块,您的回答和澄清很有帮助,非常感谢。兄弟,如果您发现它符合社区政策,请您查看问题并投票支持重新打开它。 3 人投票决定关闭它,我对其进行了编辑以使其清楚,因此,我无法发布另一个问题
猜你喜欢
  • 2013-10-14
  • 2017-10-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-06-13
相关资源
最近更新 更多