在Python中忽略for循环控制变量的优雅方法

13 投票
9 回答
10104 浏览
提问于 2025-04-15 16:54

我正在写一个Python程序,目的是从文件的顶部读取一定数量的行,并且需要保留这些行作为文件的头部,以便将来使用。目前,我的做法大致是这样的:

header = ''
header_len = 4
for i in range(1, header_len):
    header += file_handle.readline()

Pylint(一个代码检查工具)提醒我没有使用变量i。那么,有什么更符合Python风格的方法来实现这个呢?

补充说明:这个程序的目的是将原始文件智能地拆分成多个小文件,每个小文件都包含原始的头部和一部分数据。所以,我需要在读取文件的其余部分之前,先读取并保留头部。

9 个回答

10
import itertools

header_lines = list(itertools.islice(file_handle, header_len))
# or
header = "".join(itertools.islice(file_handle, header_len))

请注意,使用第一种方法时,换行符仍然会存在。如果想要去掉它们,可以使用以下方法:

header_lines = list(n.rstrip("\n")
                    for n in itertools.islice(file_handle, header_len))
12

我不太清楚Pylint的规则是什么,但你可以使用'_'这个丢弃变量名。

header = ''
header_len = 4
for _ in range(1, header_len):
    header += file_handle.readline()
13
f = open('fname')
header = [next(f) for _ in range(header_len)]

因为你要把头部信息写回到新的文件,所以你不需要对它做任何处理。要把它写回新的文件:

open('new', 'w').writelines(header + list_of_lines)

如果你知道旧文件的行数,list_of_lines 就会变成:

list_of_lines = [next(f) for _ in range(chunk_len)]

撰写回答