如何使用python从txt文件中选取每10行?

时间:2017-11-16 05:13:06

标签: python python-3.x file-handling

我需要编写一个代码,其中包含7000多行文本文件。我需要拆分每10行并将其写入另一个文件。

2 个答案:

答案 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)完成后关闭文件。