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

2024-06-26 10:51:50 发布

您现在位置:Python中文网/ 问答频道 /正文

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

我有一个格式很好的数据文件,但第一行是头。使用fileinput如果行似乎不包含数据,则必须包含check和discard行。

问题是它将对文件的其余部分应用相同的检查。 使用read()可以打开文件,读取第一行,然后在文件的其余部分进行循环。对fileinput有类似的技巧吗?

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

示例代码:

import fileinput

# how to skip first line elegantly?

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

Tags: 模块文件数据方法示例技巧readdata
3条回答

fileinput模块包含一系列方便的函数,其中一个函数似乎正符合您的要求:

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

fileinput module documentation

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]

因为使用的都是生成器和迭代器,所以不会生成中间列表。

相关问题 更多 >