使用python如何按行数拆分文件?

假设我有1个类似这样方式生成的文件:

with open('my-file.txt','wb') as f:
    for x in xrange(300000):
        f.write('hello,world\n')

现在我们想按照每个文件1000行的方式对之前生成的文件进行拆分,该如何处理?

阅读 9.6k
2 个回答
with open('my-file.txt') as myfile:
    index = 0
    while True:
        index += 1
        try:
            with open('my-file-%03d.txt' % index, 'w') as f:
                for _ in xrange(1000):
                    f.write(myfile.next())
        except StopIteration:
            break

如果是不知文件有多大就用try来捕捉StopIteration异常来终止程序

with open('my-file.txt', 'r') as reader:
    counter = 0
    findex = 0
    for line in reader:
        if counter==0:
            writer = open('file-'+str(findex), 'w')
        print >> writer, line.strip()
        counter += 1
        if counter >= 1000:
            writer.close()
            counter = 0
            findex += 1

其實,Linux 的 split 指令就可以作到這件事了:

$ split -l 1000 my-file.txt
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题