我需要编写一个代码,其中包含7000多行文本文件。我需要拆分每10行并将其写入另一个文件。
答案 0 :(得分:1)
打开文件,然后遍历输入行,每隔10行写入输出文件:
with open(in_name, 'r') as f:
with open(out_name, 'w') as g:
count = 0
for line in f:
if count % 10 == 0:
g.write(line)
count += 1
退出作用域时,open()
context manager将关闭文件。
由于决定输出只是计算,你可以使用切片f.readlines()[::10]
虽然如果文件很大,itertools islice生成器可能更合适。
from itertools import islice
with open(in_name, 'r') as f:
with open(out_name, 'w') as g:
g.writelines( islice(f, 0, None, 10) ):
我把你的问题看作是想要每隔10行写一次。如果要编写包含10个文件块的大量文件,则需要循环,直到输入文件耗尽为止。这与显示为重复的问题不同。如果分块读取超过文件末尾,则该答案会中断。
from itertools import islice, count
out_name = 'chunk_{}.txt'
with open(in_name) as f:
for c in count():
chunk = list(islice(f, 10))
if not chunk:
break
with open(out_name.format(c)) as g:
g.writelines(chunk)
答案 1 :(得分:0)
with open(fname) as f:
content = f.readlines()
with open(fname) as g:
len_f = len(content)
for x in xrange(0, len_f):
if x % 10 = 0:
g.write(content[x])
g.write("\n") #For new-line
else:
pass
g.close()
f.close()
应该工作! (Python 2.x)
关键外卖:
1)写完每一行后,不要打开/关闭写文件。
2)完成后关闭文件。