簡體   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