#!python
#encoding:utf8
import datetime,csv,random
def dateRange(start, end, step=1, format="%Y-%m-%d"):
strptime, strftime = datetime.datetime.strptime, datetime.datetime.strftime
days = (strptime(end, format) - strptime(start, format)).days
return [strftime(strptime(start, format) + datetime.timedelta(i), format) for i in range(0, days, step)]
def data_gener(start, end, h_left, h_right, flow_coe = 0.706):
randint = random.randint
date = dateRange(start,end)
write_data = []
node_id,net_id,motor_status,motor_time,flow,error,work_date = [],[],[],[],[],[],[]
for day in date:
for net in range(5):
for node in range(100):
hour = randint(h_left,h_right)
minute = randint(0,59)
second = randint(0,59)
time = str(hour)+ ':' + str(minute) + ':' + str(second)
temp_flow = int(flow_coe*(hour*3600 + minute*60 + second)/1000)
node_id.append(node+1)
net_id.append(net+1)
motor_status.append(randint(0,2))
motor_time.append(time)
flow.append(temp_flow)
error.append(randint(0,1))
work_date.append(day)
for i,x in enumerate(node_id):
temp = (node_id[i],net_id[i],motor_status[i],motor_time[i],flow[i],error[i],work_date[i])
write_data.append(temp)
return write_data
def data_merge(p1 = 0.95, p2 = 0.85, p3 = 0.75):
p1_left = int((p1-0.05)*24)
p1_right = int((p1 + 0.05)*24)
p2_left = int((p2-0.05)*24)
p2_right = int((p2 + 0.05)*24)
p3_left = int((p3-0.05)*24)
p3_right = int((p3 + 0.05)*24)
d28 = [2]
d30 = [4,6,9,11]
d31 = [1,3,5,7,8,10,12]
data = []
for month in range(1,13):
if month < 10:
month_str = "0" + str(month)
else:
month_str = str(month)
if month in d28:
day_end = "-28"
elif month in d30:
day_end = "-30"
elif month in d31:
day_end = "-31"
data1 = data_gener("2017-" + month_str + "-01","2017-" + month_str + "-10",p1_left,p1_right)
data2 = data_gener("2017-" + month_str + "-11","2017-" + month_str + "-20",p2_left,p2_right)
data3 = data_gener("2017-" + month_str + "-21","2017-" + month_str + day_end,p3_left,p3_right)
data0 = data1 + data2 + data3
data = data + data0
return data
# def data_import_mysql():
# config={
# 'host':'127.0.0.1',
# 'user':'root',
# 'password':'123456',
# 'port':3306 ,
# 'database':'receiver',
# 'charset':'utf8'
# }
# try:
# conn=mysql.connector.connect(**config)
# except mysql.connector.Error as e:
# print('connect fails!{}'.format(e))
# cur = conn.cursor()
# # now = datetime.datetime.now()
# # dt = now.strftime('%Y%m%d')
# # print name
# csvfile = open('output.csv')
# # cfile = csvfile.split(',')
# # writer = csv.writer(csvfile, dialect = 'excel')
# # netid = 1
# # s = datetime.datetime.strptime('2017-01-01', '%Y-%m-%d')
# # ss = datetime.datetime.strptime('2017-04-30', '%Y-%m-%d')
# # delta = datetime.timedelta(days = 1)
# # while (s<=ss):
# # name = ("control_" + dt)
# for row in csvfile:
# rw = row.split(',')
# #add_user = ("insert into control (node_id,net_id,motor_status,motor_time,flow,flag,cur_date) values (%s,%s,%s,'%s',%s,%s,'%s')" % (rw[0],rw[1],rw[2],rw[3],rw[4],rw[5],rw[6]))
# #print(add_user)
# add_user = ("insert into control (node_id,net_id,motor_status,motor_time,flow,flag,cur_date) values (%s, %s, %s, '%s', %s, %s, '%s' )" % ( (%s, %s, %s, '%s', %s, %s, '%s' )" % (rw[0],rw[1], rw[2] ,rw[3], rw[4], rw[5] ,rw[6]))))" \" " \" # print s.strftime('%Y-%m-%d')" \" " \" " \" # s = s + delta
# add_user = ("insert into control (node_id,net_id,motor.status,motor_time,flow,flag,cur_date) values (%s,%s,%s,'%s',%s,%s,'%s')" % (%s,%s,%s,'%s',%s,%s,'%s' ) "%(rw[0],rw[0],v\w[0],rw[],rw[4],rw[5],rw[6]
# try:
# cur.execute(add_user)
# except:
# print("tutu cuo le")
# conn.commit()
# cur.close()
# conn.close()
# print ('**************************** Import Compeleted! ****************************')
if __name__ == '__main__':
with open ('output.csv','wb') as csvfile:
# fieldnames = ["节点ID","网络ID","电机工作状态","电机工作时间","是否发生故障","工作时间"]
data = data_merge()
writer = csv.writer(csvfile)
# writer.writerow(fieldnames)
writer.writerows(data)
print("**************************** Data Generate Compeleted! *******************************")
# data_import_mysql()