прочитать файл и сохранить в структуре данных - PullRequest
0 голосов
/ 10 сентября 2018

Мне нужно прочитать файл, который выглядит так

90004    2.050    2.835    12.260    6487.971
90004 1 -0.127 0.109 -0.070 0.068 -2.382 0.514 0.130 1.404 0.950
90004 2 -0.283 0.223 -0.244 0.221 -1.059 0.893 0.213 0.385 0.996
90004 3 -0.120 0.191 -0.082 0.099 -0.192 0.251 4.158 4.233 0.999
90004 4 -0.084 0.136 -0.041 0.040 -0.257 0.419 4.441 4.551 0.999
90004 5 -0.064 0.343 -0.009 0.012 -0.076 0.241 4.096 4.083 1.000
90004 6 -0.089 0.132 -0.032 0.036 -0.214 0.290 4.828 4.986 0.999

для этого я создал функцию

def read_file(pulselist,folder):
    for index1 in range(0, len(pulselist)):
        pulse = pulselist[index1]
        filename=str(pulse)+'.txt'

        with open(folder+filename, 'rt') as f_in:
            # print(f.readline())
            lines = f_in.readlines()
            for index, line in enumerate(lines):
                if index == 0:
                    pass
                elif index ==1:
                    Pulse,MAX_IP,MAX_BVAC,MAX_LID3,MAX_TMAX =lines[index].split()
                else:
                    dummy = lines[index].split()
                    info = dummy

        temp_dict=dict(zip(['A','B','C','D','E','F','G','H','I'], [x for x in info[1:]]))
        temp_dict['pulse'] = int(pulse)
        temp_dict['MAX_IP'] = MAX_IP
        temp_dict['MAX_BVAC'] = MAX_BVAC
        temp_dict['MAX_LID3'] = MAX_LID3
        temp_dict['MAX_TMAX'] = MAX_TMAX
    return temp_dict

Таким образом, мне удалось сохранить только первую и последнюю строку. Я пытаюсь найти способ сохранить все строки так, чтобы в конечном словаре (или любой другой структуре данных) была вся информация о строках в файле, правильно сохраненная.

любая помощь?

1 Ответ

0 голосов
/ 11 сентября 2018

Я решил таким образом:

def read_polarimetry_file(pulselist,folder):
    pulse_struct = dict()
    for index1 in range(0, len(pulselist)):
        shot = pulselist[index1]
        filename=str(shot)+'.txt'

        with open(folder+filename, 'rt') as f_in:
            # print(f.readline())
            lines = f_in.readlines()
            channels = {}
            channels.setdefault('A', [])
            channels.setdefault('B', [])
            channels.setdefault('C', [])
            channels.setdefault('D', [])
            channels.setdefault('E', [])
            channels.setdefault('F', [])
            channels.setdefault('G', [])
            channels.setdefault('H', [])
            channels.setdefault('I', [])
            for index, line in enumerate(lines):
                if index == 0:
                    pass
                elif index ==1:
                    Pulse,MAX_IP,MAX_BVAC,MAX_LID3,MAX_TMAX =lines[index].split()
                else:
                    dummy = lines[index].split()
                    info = dummy
                    channels['A'].append(float(info[2]))
                    channels['B'].append(float(info[3]))
                    channels['C'].append(float(info[4]))
                    channels['D'].append(float(info[5]))
                    channels['E'].append(float(info[6]))
                    channels['F'].append(float(info[7]))
                    channels['G'].append(float(info[8]))
                    channels['H'].append(float(info[9]))
                    channels['I'].append(float(info[10]))

            pulse=dict()
            pulse['JPN']=shot
            pulse['MAX_IP']=MAX_IP
            pulse['MAX_BVAC']=MAX_BVAC
            pulse['MAX_LID3']=MAX_LID3
            pulse['MAX_TMAX']=MAX_TMAX
            pulse['channels'] = channels


        pulse_struct[str(shot)]=pulse


    return pulse_struct
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...