在Python中忽略for循环控制变量的优雅方法
我正在写一个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)]