Python 2.7 - 将逗号分隔的文本文件拆分为较小的文本文件

时间:2013-09-04 00:21:49

标签: python-2.7

我试图找出如何使用循环创建复合字母列表(但未成功)。我是初学程序员,已经学习了几个月的python。幸运的是,我后来找到了解决这个问题的方法 - Genearte a list of strings compound of letters from other list in Python - 请参阅第一个答案。

所以我拿了那些代码并根据我的需要添加了一些代码。我随机化了列表,将列表转换为逗号分隔文件。这是代码:

from string import ascii_lowercase as al
from itertools import product
import random

list = ["".join(p) for i in xrange(1,6) for p in product(al, repeat = i)]

random.shuffle(list)

joined = ",".join(list)

f = open("double_letter_generator_output.txt", 'w')

print >> f, joined
f.close()

我现在需要做的是将大量文件"double_letter_generator_output.txt"拆分成较小的文件。每个文件需要包含200个“单词”。所以它需要拆分成许多文件。文件当然不存在,也需要由程序创建。我怎么能这样做?

1 个答案:

答案 0 :(得分:1)

这是我将如何做到这一点,但我不确定你为什么要把它分成更小的文件。我通常会一次完成所有操作,但我假设文件太大而无法存储在工作内存中,所以我一次遍历一个字符。

让bigfile.txt包含

1,2,3,4,5,6,7,8,9,10,11,12,13,14

MAX_NUM_ELEMS = 2 #you'll want this to be 200
nameCounter = 1
numElemsCounter = 0
with open('bigfile.txt', 'r') as bigfile:
    outputFile = open('output' + str(nameCounter) + '.txt', 'a')
    for letter in bigfile.read():
        if letter == ',':
            numElemsCounter += 1
        if numElemsCounter == MAX_NUM_ELEMS:
            numElemsCounter = 0
            outputFile.close()
            nameCounter += 1
            outputFile = open('output' + str(nameCounter) + '.txt', 'a')
        else:
            outputFile.write(letter);
    outputFile.close()

现在output1.txt为1,2,output2.txt为3,4,output3.txt为5,6等。

$ cat output7.txt
13,14

这有点草率,你应该写一个很好的功能来做它并按你喜欢的方式格式化!

仅供参考,如果你想写一堆不同的文件,没有理由先写一个大文件。立刻写下小文件。

这样,最后一个文件可能少于MAX_NUM_ELEMS个元素。