我试图找出如何使用循环创建复合字母列表(但未成功)。我是初学程序员,已经学习了几个月的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个“单词”。所以它需要拆分成许多文件。文件当然不存在,也需要由程序创建。我怎么能这样做?
答案 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个元素。