繁体   English   中英

从文件中读取数据,然后将其全部放入一个列表中

[英]Reading data from files and then putting it all into one list

我正在从目录中的多个文件中读取数据,并使用循环来执行此操作。 当我获取我需要的信息时,它会将其全部放入单独的列表中,并且我希望将它们全部打印到同一个列表中。 当我打印列表时,它全部打印到单独的列表中,看起来好像它覆盖了所有其他列表,因为当我将文件写入 .txt 文件时,它只会写入最后打印的列表。 有没有办法修改我的代码并将其全部写入一个列表? 这是我当前的代码:

for file in os.listdir():
    if file.endswith(".ls"):
        filepath = f"{path}\{file}"
        with open(filepath,'r') as monitorAxisData:

            #Reading the entire file
            monitorAxisDate = monitorAxisData.readlines()[3:4]

            #Inserting the date into a list
            dateList = []
            dateList.append(monitorAxisDate[0])

            #Joining date list
            dateListJoin = (' '.join(dateList))
            numericalDate = dateListJoin[10:20]

        
         #Reading J values
         with open(filepath, 'r') as jValues:
             j1Average = jValues.readlines()[43:53]
        
             #Creating a list for J values
             jValuesList = []
             jValuesList.append(j1Average[3])
             jValuesList.append(j1Average[4])
             jValuesList.append(j1Average[5])
             jValuesList.append(j1Average[6])
             jValuesList.append(j1Average[7])
             jValuesList.append(j1Average[8])
             jValuesList.append(j1Average[9])
        
            #Converting List to a string
            jValuesJoin = (' '.join(jValuesList))

            #Only printing the strings we need
            j1Values = jValuesJoin[10:16] #Done
            j2Values = jValuesJoin[51:57] #Done
            j3Values = jValuesJoin[92:98] #Done
            j4Values = jValuesJoin[133:139] #Done
            j5Values = jValuesJoin[174:180] #Done
            j6Values = jValuesJoin[215:221] #Done
            j7Values = jValuesJoin[256:262] #Done

            #Inserting everything into a list
            jValuesList2 = []
            jValuesList2.append(numericalDate)
            jValuesList2.append(j1Values)
            jValuesList2.append(j2Values)
            jValuesList2.append(j3Values)
            jValuesList2.append(j4Values)
            jValuesList2.append(j5Values)
            jValuesList2.append(j6Values)
            jValuesList2.append(j7Values)

尝试在循环之外定义一个列表,因为现在,它似乎正在为每次迭代创建新列表。 如果 jValue2 是您要保留的最终信息,您可以在开始 for 循环之前创建它。

例如:


jValuesList2 = []

for file in os.listdir():
    # the rest of your code


然后从这部分代码中删除jValueList2 = []

            # the rest of your code 

            #Inserting everything into a list

            jValuesList2.append(numericalDate)
            jValuesList2.append(j1Values)
            jValuesList2.append(j2Values)
            jValuesList2.append(j3Values)
            jValuesList2.append(j4Values)
            jValuesList2.append(j5Values)
            jValuesList2.append(j6Values)
            jValuesList2.append(j7Values)

这些细微的调整将确保所有内容都保存到同一个列表中,并且该列表将在 for 循环之外对您可用。

当我们在 for 循环中定义列表时,每次它经过一个新的迭代(一个新文件)时,它都会重新定义列表。 这就是为什么我们必须在开始遍历文件之前定义最终结果列表jValuesList2的原因。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM