如何添加一个新行total_time,它允许我计算每个任务花费的总时间?

2024-09-19 23:34:17 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图使用一个.json文件,并希望创建一个新的.csv文件来计算完成一个级别所需的总时间,该级别介于startTask和endTask之间。从那里我该去哪里

这是一个在Python3中运行的辅助项目。在过去,我尝试了不同的方法来计算完成一个级别的总时间,它介于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之间发生的所有操作的总时间,但实际上没有结果


Tags: inclientidnewfordatatimeaction