Как добавить новую строку total_time, которая позволяет мне рассчитывать общее время, затрачиваемое каждой задачей? - PullRequest
0 голосов
/ 25 июня 2019

Я пытаюсь использовать файл .json и хочу создать новый файл .csv, чтобы вычислить общее время, необходимое для завершения уровня, который находится между startTask и endTask. Куда мне идти оттуда?

Это для стороннего проекта, работающего на Python 3. В прошлом я пробовал разные способы подсчета общего времени для завершения уровня, который находится между startTask и endTask, но столбец total_time пуст.

filtered_data = []
for element in revised_data: 
    if element[1].get('action_id', '') == 'state-save':
        continue # skips it
    if 'state-path' in element[1].get('action_id', ''):
        continue # skips it
    filtered_data.append(element)

new_data = []
targets = ['session_id','user_id','quest_id','quest_detail', 'quest_seq_id','dynamic_quest_id','action_id',
'action_detail','client_timestamp']
for i in range(len(filtered_data)):
    element = filtered_data[i]
    previous = filtered_data[i - 1]
    new_element = {
        "type": element[0]
    }
    for target in targets:
        new_element[target] = element[1].get(target, '')
    # Calculate the total time to complete a level.
    time = datetime.fromtimestamp(new_element['client_timestamp']/1000)
    new_element['time_stamp'] = time.strftime("%Y-%m-%d %H:%M:%S")
    new_element['time_elapsed'] = ''
    if element[0] == 'startTask':
        row = []
        start = element
    elif element[0] == 'action':
        pass
        #new_element['total_time'] = new_element['client_timestamp'] - previous[1]['client_timestamp']
    #new_data.append(new_element)
    elif element[0] == 'endTask':
        end = element
    new_data.append(row)

headers = ["type", "time_elapsed", "time_stamp", "total_time"] + targets # similar to prepend
name_of_file = sys.argv[1] + "_1" + ".csv"
with open(name_of_file, 'w', newline='') as saved_file: # Write the file so that you can save the file 
    # Write some data and write a dictionary writer
    w = csv.DictWriter(saved_file, fieldnames=headers) # look at dictionary and order labels in order
    w.writeheader() # writes the top row of file with labels for you
    w.writerows(new_data)

Я ожидаю, что в столбце total_time будет указано общее время всех действий, которые произошли между startTask и endTask, но на самом деле результатов нет.

...