将数据从for循环保存到单个列表

时间:2017-09-13 16:25:28

标签: python

我有一个文件上传页面,用户上传他们的文件,他们通常是一堆文件。在我的python代码中,我试图从该文件中拉出一个标签,然后将其保存到列表中,所以一切正常但是在这里,我收到三个不同的输出列表,上传了3个文件。如何将3个输出列表合并为一个。这是我的代码

    a=self.filename
    print(a) #this prints out the uploaded file names(ex: a.xml,b.xml,c.xml)
    soc_list=[]
    for soc_id in self.tree.iter(tag='SOC_ID'):
        req_soc_id = soc_id.text
        soc_list.append(req_soc_id)
    print(soc_list)

我得到的输出是:

    a.xml
    ['1','2','3']
    b.xml
    [4,5,6]
    c.xml
    [7,8,9]

我想将所有内容合并为一个列表

1 个答案:

答案 0 :(得分:1)

据我分析,我认为您希望将所有soc_list值写入单个文件,然后您可以将文件读回。这样做对您来说是最好的方法,因为您不会像在问题中提到的那样知道用户文件上传。为此,请尝试理解并实施以下代码以保存到您的文件

    save_path = "your_path_goes_here"
    name_of_file = "your_file_name"
    completeName = os.path.join(save_path, name_of_file + ".txt")
    file1 = open(completeName, 'a')
    for soc_id in self.tree.iter(tag='SOC_ID'):
        req_soc_id = soc_id.text
        soc_list.append(req_soc_id)
        file1.write(req_soc_id)
        file1.write("\n")
    file1.close()

通过这种方式,您可以随时将文件写入文件,然后回读数据并将其转换为列表,请按照以下示例进行操作

    examplefile = open(fileName, 'r')
    yourResult = [line.split('in_your_case_newline_split') for line in examplefile.readlines()]