![](/img/trans.png)
[英]Reading data from a file, Splitting it into a list, then taking that data and putting it into a function
[英]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.