Ars*_*tic 3 python text iterator lines
我想将一个非常大的.txt文件拆分成相等的文件,每个文件包含N行。并将其保存到文件夹
with open('eg.txt', 'r') as T:
while True:
next_n_lines = islice(T, 300)
f = open("split" + str(x.pop()) + ".txt", "w")
f.write(str(next_n_lines))
f.close()
Run Code Online (Sandbox Code Playgroud)
但这会创建一个包含数据的文件
" < itertools.islice object at 0x7f8fa94a4940 >"
Run Code Online (Sandbox Code Playgroud)
在txt文件中。
我想保留原始txt文件中保留的相同结构和样式。
并且此代码到达文件末尾时也不会自动终止。如果可能的话,我将使代码停止写入文件,如果没有剩余数据要写入,则退出。
您可以iter与一起使用islice,使用枚举一次使n行,为文件赋予唯一的名称。 f.writelines将每行列表写入一个新文件:
with open('eg.txt') as T:
for i, sli in enumerate(iter(lambda:list(islice(T, 300)), []), 1):
with open("split_{}.txt".format(i), "w") as f:
f.writelines(sli)
Run Code Online (Sandbox Code Playgroud)
您的代码将永远循环,因为您不包含任何中断条件,将其iter与空列表一起使用将意味着循环在迭代器用尽时结束。
此外,如果你想传递一个islice对象写入你只需调用writelines就可以了,即f.writelines(next_n_lines),str(next_n_lines)。
| 归档时间: |
|
| 查看次数: |
1551 次 |
| 最近记录: |