将列表列表写入单独的文本文件,每个列表中包含一个文件

时间:2016-09-19 18:42:29

标签: python

所以我试着写一个列表来分隔文件。 每个列表包含100个或更少的字符串对象。目标是保留一个不超过100行的文本文件。

要做到这一点,我拆分列表但现在我遇到了将它们写入文件的问题。 因此,必须将列表中的列表写入其自己的单独文件中。总共有275个字符串对象

endline

1 个答案:

答案 0 :(得分:1)

这样的事情会起作用。我不得不使用random生成一些数据,进入长度为275个元素的列表。

import random

def chunks(l, n):
    n = max(1, n)
    return [l[i:i + n] for i in range(0, len(l), n)]

data = [random.randint(0, 10) for x in range(275)]

chunked_data = chunks(data, 100)

for file_num, sublist in enumerate(chunked_data):
    with open("workFlow_sheet{}.txt".format(file_num), 'w') as outfile:
        for item in sublist:
            outfile.write(str(item) + '\n')

基本上,将数据细分为最大长度为100的嵌套列表,然后将每个嵌套列表的内容写入唯一文件。

修改

我无法根据包含相同数据的每个文件重现您的问题。但是,您在错误的范围内增加i(它需要额外的缩进级别,我认为您在代码中多次覆盖每个文件)并且每次迭代时都没有close()个文件。使用with(Python context manager)只意味着它会在操作完成后自动关闭文件。我认为这是原始代码的工作调整...虽然生成了随机列表。

import random
import math

parameter_list = [random.randint(0, 10) for x in range(275)]

size=100
list_ofList_flows=[parameter_list[i:i+size] for i  in range(0,len(parameter_list), size)]
 #above list_ofList_flows contains [100][100][75] in terms of length

fileNumbers = int(math.ceil((len(parameter_list) / 100)))
#fileNumbers is 3, because we have 3 sets of lists[100, 100, 75]

i = 0
while i < fileNumbers:

    for flowGroup in list_ofList_flows:
        f = open("workFlow_sheet" + str(i) + ".txt", "w")

        for flo in flowGroup:
            f.write(str(flo) + '\n')
        f.close()


        i = i + 1