【问题标题】:Read a file starting from the second line in python从python的第二行开始读取文件
【发布时间】:2017-09-18 02:05:27
【问题描述】:

我用python,不知道怎么做。

我想读取文件中的很多行。但我必须从第二行开始阅读。所有文件都有不同的行,所以我不知道该怎么做。

代码示例是从第一行到第 16 行。 但是我必须从第二行到行尾读取文件。 谢谢!:)

with open('filename') as fin:
  for line in islice(fin, 1, 16):
    print line

【问题讨论】:

  • 读取第一行并丢弃它。然后读取文件的其余部分。

标签: python file io


【解决方案1】:

您应该可以调用next 并丢弃第一行:

with open('filename') as fin:
    next(fin) # cast into oblivion
    for line in fin:
        ... # do something

这很简单,因为fin 是一个生成器。

【讨论】:

    【解决方案2】:
    with open("filename", "rb") as fin:
        print(fin.readlines()[1:])
    

    【讨论】:

    • 虽然此代码可以解决 OPs 问题,但如果您包含最少量的信息会更好。阅读此问题的其他人可能并不熟悉代码中的所有内容或其背后的想法
    【解决方案3】:

    查看islice的文档

    itertools.islice(可迭代,停止)
    itertools.islice(iterable, start, stop[, step])

    创建一个从可迭代对象中返回选定元素的迭代器。如果 start 不为零,则跳过 iterable 中的元素,直到到达 start。之后,元素将连续返回,除非 step 设置为高于 1 导致项目被跳过。 如果 stop 为 None,则迭代继续,直到迭代器耗尽,如果有的话;否则,它会停在指定位置。与常规切片不同,islice() 不支持开始、停止或步进的负值。可用于从内部结构已扁平化的数据中提取相关字段(例如,多行报表可能每三行列出一个名称字段)。

    我认为您可以告诉它从第二行开始并迭代直到结束。例如

    with open('filename') as fin:
        for line in islice(fin, 2, None):  # <--- change 1 to 2 and 16 to None
            print line
    

    【讨论】:

      猜你喜欢
      • 2017-03-01
      • 1970-01-01
      • 2019-05-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-08-27
      相关资源
      最近更新 更多