我读取包含75,151行的文件。 我想分开每5万行。 所以我制作了2个文件,一个文件有50,000行,另一个文件有25,151行。
我做了这样的代码 (INSERT_NUMBER:50,000)
for index, data in enumerate(lines):
if ((index % INSERT_NUMBER) == 0 and index != 0) or (index == (lines- 1)) :
made file ....
这是分割每50,000行和制作新文件的更好方法吗?
答案 0 :(得分:1)
这是使用itertools.groupby()
的一种方式:
#!/bin/bash
keyword="foo"
while IFS= read -r line; do
[[ "$line" =~ $keyword ]] && line="${line#*#}"
printf "%s\n" "$line"
done < /etc/network/interfaces > /tmp/interfaces_modified
所以这里的技巧是使用每行的行号使用整数除法将其分组为块,然后使用分组键作为输出文件名的计数器。
它比你现有的更好吗?读取代码有点复杂,但是当你尝试使用模运算进行分组时,它不需要处理那些烦人的边缘情况。