我有一个csv文件,名为user_log.csv。我需要计算在特定服务器上和每个特定时间使用每个许可证的次数。 日志文件csv如下所示:
Report Date Time,Server,Licence,User,Host,In Use Since Date Time
02/02/2019 11:50,server1,teamcenter_author,user115,TcServer,02/02/2019 11:48
02/02/2019 11:50,server1,teamcenter_consumer,user133,TcServer,02/02/2019 08:57
02/02/2019 11:50,server2,teamcenter_consumer,user31,TcServer,02/02/2019 10:07
02/02/2019 11:50,server1,teamcenter_consumer,user120,TcServer,02/02/2019 10:15
02/02/2019 11:50,server1,visview_base,user120,client1,02/02/2019 05:14
02/02/2019 11:50,server1,visview_base,user12,client2,02/02/2019 07:19
02/02/2019 11:50,server1,visview_base,user95,client3,02/02/2019 11:10
02/02/2019 11:50,server3,NX12100N,user70,client4,02/01/2019 10:54
02/02/2019 11:50,server3,NX12100N_gateway,user70,client4,02/01/2019 10:54
02/02/2019 11:50,server3,NX12100N_solid_modeling,user70,client4,02/01/2019 10:54
02/02/2019 11:55,server1,teamcenter_author,user115,TcServer,02/02/2019 11:48
02/02/2019 11:55,server1,teamcenter_consumer,user133,TcServer,02/02/2019 08:57
02/02/2019 11:55,server1,teamcenter_consumer,user31,TcServer,02/02/2019 10:07
02/02/2019 11:55,server1,teamcenter_consumer,user120,TcServer,02/02/2019 10:15
02/02/2019 11:55,server1,visview_base,user120,client1,02/02/2019 05:14
02/02/2019 11:55,server1,visview_base,user12,client2,02/02/2019 07:19
02/02/2019 11:55,server1,visview_base,user95,client3,02/02/2019 11:10
02/02/2019 11:55,server1,visview_base,user115,TcServer,02/02/2019 11:50
02/02/2019 11:55,server3,NX12100N,user70,client4,02/01/2019 10:54
02/02/2019 11:55,server3,NX12100N_gateway,user70,client4,02/01/2019 10:54
02/02/2019 11:55,server3,NX12100N_solid_modeling,user70,client4,02/01/2019 10:54
我写的代码如下
file = open('/user_log.csv', "r")
reader= csv.reader(file)
time={}
for row in reader:
licence_name = row[2]
server = row[1]
if licence_name in time.keys():
if server in licence_name:
time[row[2]][row[1]]['count'] += 1
else:
time.setdefault(licence_name,{}).setdefault(server,{})['count'] =1
else:
time.setdefault(licence_name,{}).setdefault(server,{})['count']=1
return render(request, "stats.html", {'no_of_line':time})
我得到的输出是这样的:
license_name
是字符串,不是字典。您想测试server
是否在嵌套字典中你可以使用
if license_name in time
,你不需要使用time.keys()
您不需要所有的
setdefault()
调用,只需要根据需要创建新的字典。您可以使用它将所有代码压缩为一行我用这段代码得到的
time
的值,示例CSV文件是:相关问题 更多 >
编程相关推荐