Python:使用循环,将数据读取并保存到其他列表

时间:2019-06-24 13:27:48

标签: python list loops

我想创建一个循环,该循环从多个.txt文件中读取数据并将其保存到不同的列表(根据这些不同的.txt文件)。

我不知道如何在循环中创建以下列表(或np.arrays):time1,time2,.. timeN,其中N是要分析的多个.txt文件。 我使用以下命令来连接“恒定”时间和“变量”数字:obj ['time'+ str(shot)],但它没有保存为变量。

import numpy as np
import os

for shot in  range(1,10):   
    #get the first txt:
    txt_file = os.path.join(path,'shot'+str(shot)+'.txt')
    #get data from txt:      
    data = np.genfromtxt(txt_file, skip_header = 4) 
    # now save it to the list (or np.array):
    obj['time'+str(shot)] = np.array([row[0] for row in data])    

作为输出,我希望有10个列表或数组,以便将来有时间使用它们。

2 个答案:

答案 0 :(得分:0)

您可以使用空列表或空字典来保存结果。

在第一种情况下,您应该先创建一个空列表,然后再创建一个附加数据。因此,列表中的第 i 个元素将对应于第(i + 1)个源文件。

import numpy as np
import os

my_data = []
for shot in  range(1,10):   
    #get the first txt:
    txt_file = os.path.join(path,'shot'+str(shot)+'.txt')
    #get data from txt:      
    data = np.genfromtxt(txt_file, skip_header = 4) 
    #append data
    my_data.append(data)

first_source_data = my_data[0]

第二个选项,如果您想使用文件名进行访问。

import numpy as np
import os

my_data = {}
for shot in  range(1,10):   
    #gen filename
    filename = 'shot'+str(shot)+'.txt'
    #get the first txt:
    txt_file = os.path.join(path, filename)
    #get data from txt:      
    data = np.genfromtxt(txt_file, skip_header = 4) 
    # now save it to the list (or np.array):
    my_data[filename] = data

first_source_data = my_data['shot1.txt']

答案 1 :(得分:0)

您的问题有点令人困惑。但是,如果我理解正确的话。

您实际上不想使用列表,而是要使用字典。字典是您在其中使用关键字访问保存的数据(过于简化)的列表

如果的确如此,则需要在前面加上obj = dict()。 或obj = [](如果要使用列表)

正确的字典最后一行是

obj['time'+str(shot)] = data[0]    

或带有列表

obj[shot] = data[0]