代码之家  ›  专栏  ›  技术社区  ›  stefanB

使用python文件输入模块时跳过第一行的优雅方法?

  •  13
  • stefanB  · 技术社区  · 15 年前

    使用时是否有跳过第一行文件的优雅方式? python 文件输入模块?

    我有数据文件,其中有格式良好的数据,但第一行是头。使用 fileinput 如果行似乎不包含数据,我将不得不包括检查和放弃行。

    问题是,它将对文件的其余部分应用相同的检查。 与 read() 您可以打开文件,读取第一行,然后循环访问文件的其余部分。有类似的把戏吗 文件输入 ?

    有没有一种优雅的方法可以跳过第一行的处理?

    示例代码:

    import fileinput
    
    # how to skip first line elegantly?
    
    for line in fileinput.input(["file.dat"]):
        data = proces_line(line);
        output(data)
    
    4 回复  |  直到 6 年前
        1
  •  15
  •   Phil    15 年前

    这个 fileinput 模块包含一系列方便的功能,其中一个功能似乎正好满足您的需求:

    for line in fileinput.input(["file.dat"]):
      if not fileinput.isfirstline():
        data = proces_line(line);
        output(data)
    

    fileinput module documentation

        2
  •  17
  •   syockit    11 年前
    lines = iter(fileinput.input(["file.dat"]))
    next(lines) # extract and discard first line
    for line in lines:
        data = proces_line(line)
        output(data)
    

    如果您愿意,也可以使用itertools.islice方式。

    import itertools
    finput = fileinput.input(["file.dat"])
    lines = itertools.islice(finput, 1, None) # cuts off first line
    dataset = (process_line(line) for line in lines)
    results = [output(data) for data in dataset]
    

    由于所使用的一切都是生成器和迭代器,因此不会生成中间列表。

        4
  •  0
  •   user3698773    6 年前
    with open(file) as j: #open file as j
        for i in j.readlines()[1:]: #start reading j from second line.