#coding=utf-8
import sys
import random
import datetime,time
import string
import linecache
#生成随机整数值,small<=生成值<=big
def F_RandomInt(small, big):
return str(random.randint(small, big))
#生成随机小数值,snum为小数位个数,small<=生成值<=big
def F_RandomDecimal(small, big, snum):
return str(round(random.uniform(small, big), snum))
#生成随机字符串,snum为字符串长度,随机取大小写字母和数字,单个字符串内不会有重复字符,最大长度为62
#如需长度超过62或单个字符串内有重复字符,将*1部分的1改大,这个数值改为几,即为随机字符串内同一个字符可能出现的次数
def F_RandomString(snum):
return ''.join(random.sample((string.ascii_letters + string.digits) * 1, snum))
#随机读取文件中的一行,addr为读取文件地址,snum为该文件行数
def F_RandomOutfileLine(addr, snum):
return linecache.getline(addr, random.randint(1, snum))
#随机生成时间日期,year、month、day输入是最小年月日,scopeday是从最小年月日开始第几天为最大年月日,type是最终输出类型
#如需生成2017年随机日期,格式为20170101,即为F_RandomDatetime(2017,1,1,365,"%Y%m%d")
#如需生成2017年3月随机时间日期,格式为2017-03-01 12:00:00,即为F_RandomDatetime(2017,3,1,31,"%Y-%m-%d %H:%M:%S")
def F_RandomDatetime(year, month, day, scopeday, type):
return (datetime.datetime(year, month, day, 0, 0, 0) + datetime.timedelta(days = random.randint(0, scopeday - 1)) + datetime.timedelta(seconds = random.randint(0, 86399))).strftime(type)
#生成指定时间范围的时间日期,参数year、month、day、scopeday、type与F_RandomDatetime相同,增加scopetime_begin、scopetime_end作为开始时间和结束时间
#如需生成00:00:00到12:00:00范围时间,即为F_RandomDatetime_Scopetime(2017,3,1,1,'00:00:00','12:00:00',"%H:%M:%S")
def F_RandomDatetime_Scopetime(year, month, day, scopeday, scopetime_begin, scopetime_end, type):
st_begin = (datetime.datetime.strptime(scopetime_begin, '%H:%M:%S') - datetime.datetime.strptime('00:00:00', '%H:%M:%S')).seconds
st_end = (datetime.datetime.strptime(scopetime_end, '%H:%M:%S') - datetime.datetime.strptime('00:00:00', '%H:%M:%S')).seconds
return (datetime.datetime(year, month, day, 0, 0, 0) + datetime.timedelta(days = random.randint(0, scopeday - 1)) + datetime.timedelta(seconds = random.randint(st_begin, st_end))).strftime(type)
#生成自增序列
L_KeyColumnID=[0]
def F_IncreaseColumn():
L_KeyColumnID[0] = L_KeyColumnID[0] + 1
return str(L_KeyColumnID[0])
#该函数作用为,生成前几位为固定字符串,后几位为递增数字的字符串,每个字符串连续重复出现多次
#string为前几位固定字符串,stringid为后几位递增数字的最大值,repeatnum为每个字符串重复出现的次数,index为当前生成行的行数编号
#F_StringRepeat("aa",10,3,i),即为生成aa01/aa01/aa01/aa02/aa02/aa02/...aa10/aa10/aa10共30个值,如果i超过30个,重新循环
def F_StringRepeat(string, stringid, repeatnum, index):
return string + str(1 + index / repeatnum % stringid).zfill(len(str(stringid)))
#生成中兴小表,10W行
def F_MakeData_zx_small():
separator="|"
makestr=""
filename="SL_V_CORP_CUST_DPST_ACCT_10w.txt"
file=open(filename,"w")
rownum=100000
for i in range(rownum):
makestr = makestr + F_IncreaseColumn()
makestr = makestr + separator
for j in range(53):
makestr = makestr + F_RandomString(20)
makestr = makestr + separator
makestr = makestr + '\n'
if i%100==0:
file.write(makestr)
makestr=""
file.write(makestr)
file.close()
F_MakeData_zx_small()
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




