-
Notifications
You must be signed in to change notification settings - Fork 1
/
utilities.py
79 lines (64 loc) · 1.88 KB
/
utilities.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
# -*- coding: utf-8 -*-
"""
Created on Tue Oct 18 18:44:44 2022
@author: Arman Hossain
"""
from splitter import split_cpe,split_date
import pandas as pd
import pickle
def read_csv_dataset(path):
data = pd.read_csv(path)
indexes = [item.find("** REJECT **") < 0 for item in data.description.values.tolist()]
return data[indexes]
def read_pickle(path):
with open(path, 'rb') as f:
return pickle.load(f)
def save_pickle(obj,filename):
with open(filename , 'wb') as file:
pickle.dump(obj, file)
def vendor_name(cpe):
return split_cpe(cpe)[3]
def vendor_product_name(cpe):
splited = split_cpe(cpe)
return (splited[3],splited[4])
def date_yy_mm(date):
time = split_date(date)
return (time[0],time[1])
def min_max_year(dates):
mini = 2050
maxi = 1950
for sdate in dates:
date = date_yy_mm(sdate)
yy = date[0]
if mini>yy: mini = yy
if maxi<yy: maxi = yy
return (mini,maxi)
def info(obj,what="All",docstring = False):
arr = ['function','type','module','class','bool','str','list','float']
cnt = 1
for attr in dir(obj):
value_type = type(getattr(obj,attr)).__name__
if what == 'All':
cnt+=1
print(cnt,attr,"(",value_type,")")
elif value_type == what:
cnt+=1
if docstring:
print(cnt,attr,"(-----",getattr(obj,attr).__doc__,"--)")
else:
print(cnt,attr)
elif what == 'other' and value_type not in arr:
print(cnt, attr,"(",value_type,")")
cnt+=1
if False:
daa = {'adf':5,'arman':64}
for item in daa.values():
print(item)
#%% pickle saving
# import pickle
# filename = '2002-2022-vendor-year-count.pickle' # your file name
# obj = vendor_info # your object
# with open(filename , 'wb') as file:
# pickle.dump(obj, file)
# with open(filename, 'rb') as file:
# obj = pickle.load(file)