![](/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.