【问题标题】:Splitting a text file拆分文本文件
【发布时间】:2015-06-02 09:40:37
【问题描述】:

我有一个包含一组文本文档的文件夹。我想将每个文档拆分为两个或三个文档,每个文档应该是 45-70kb。

我该怎么做?我试过了:

def split_file(filename, pattern, size):
    with open(filename, 'rb') as f:
        for index, line in enumerate(f, start=1):
            with open(pattern.format(index), 'wb') as out:
                n=0
                for line in chain([line], f):
                    out.write(line)
                    n += len(line)
                    if n >= 450000 and n <=700000:
                        break
if __name__ == '__main__':
    split_file('folderadress', 'part_{0:03d}.txt', 20000)

但在我看来这是完全错误的。

【问题讨论】:

  • “在我看来这是完全错误的” 是什么意思?错误?意外的输出?
  • 我什么都不做,没有任何错误。我对此表示怀疑,它是否在做我想做的事?

标签: python text split


【解决方案1】:

这使用了与您不同的方法。出于测试目的,我已将每个文件的最大大小设置为 1000 字节:

import glob
import os

dname = './gash'    # directory name
unit_size = 1000    # maximum file size

for fname in glob.iglob("%s/*" % dname):
    with open(fname, 'rb') as fo:
        data = True
        n = 1
        while data:
            # read returns "" (False) on EOF
            data = fo.read(unit_size)
            if data:
                sub_fname = fname + str(n)

                with open(sub_fname, 'wb') as out:
                    out.write(data)

                n += 1

这可能会在文件之间分割一行,但是您没有说明这是否是一个问题。

【讨论】: