python3如何随机生成大数据存储到指定excel文档里
本次主要采用的是python3的第三方库xlwt,来创建一个excel文件。具体步骤如下:
1、确认存储位置,文件命名跟随时间格式
2、封装写入格式
3、实现随机数列生成
4、定位行和列把随机数写入
5、统一写入条目数,实现入参确认条目
6、封装对文件夹内多余数据表的删除操作。
说明:最大支持60000条,这个是由于excel格式限制的,如果对大数据有更高要求的如,写入6000000数据的话可以进行循环获取到100个excel来导入。
实际文件生成效果图:
文件内容格式如下图
源码如下:
import xlrd
import xlwt
from my_framework.log import Logger
import time,os
import random
# create a logger instance
logger = Logger(logger="file_process").getlog()
class file_process():"""封装操作excel的方法"""# 获取某一页sheet对象def create_excel_file(self):da = time.strftime("%Y-%m-%d/%H-%M-%S", time.localtime())self.da_a = str(da.split('/')[0])self.da_b = str(da.split('/')[1])filename = "case_import"+(self.da_a+'-'+self.da_b).replace('-','.')+".xls"excel_path = os.path.dirname(os.path.abspath('.')) + '\config_file\case_import'self.ecl =os.path.join(excel_path,filename)book = xlwt.Workbook(encoding = 'utf-8')self.sheet1 = book.add_sheet('Sheet 1',cell_overwrite_ok = True)self.title = [u'进件号',u'批次号',u'批次名称',u'产品名称',u'贷款机构',u'产品类型',u'姓名',u'身份证',u'手机',u'年龄',u'性别'u'帐号',u'卡号',u'逾期天数',u'账龄',u'手别' ,u'最新欠款金额',u'委案金额',u'委案时间',u'退案时间',u'最近一次进入催收日期',u'额度',u'案件地区',u'币种',u'开户行',u'账单日',u'开卡日期',u'是否分期',u'分期情况',u'本金',u'利息',u'违约金',u'最低还款',u'委案最低还款额',u'争议金额',u'争议后金额',u'服务费',u'超限费',u'累计还款',u'委前最后付款额',u'委前最后付款日',u'案件备注',u'家庭地址',u'家庭电话',u'公司名称',u'公司电话',u'公司地址',u'常用地址',u'账单地址',u'邮政编码',u'其他地址',u'QQ',u'微信',u'支付宝',u'邮箱',u'联系人1姓名',u'联系人1关系',u'联系人1电话',u'联系人2姓名',u'联系人2关系',u'联系人2电话',u'联系人3姓名',u'联系人3关系',u'联系人3电话']batch_code = ['SZ-GF-2018-06-20','SZ-GF-2018-06-20','SZ-GF-2018-06-20','SZ-GF-2018-06-20','SZ-GF-2018-06-20','SZ-GF-2018-06-20','SZ-GF-2018-06-20','SZ-GF-2018-06-20']commit_money = ['255','452','1223','452','52']self.commit_date = [self.da_a]latest_debt_money = ['255','452','1223','452','52']self.limit_date = ['2019-09-01','2019-05-01','2019-08-21','2019-02-01','2019-12-01','2019-09-25','2019-09-19',]self.product_type = ['信贷','消费金融','信用卡']self.borrower_idnumber = ['422325198908151539','620503198108111211','360103198904054718']self.borrower_phone = ['13686821736']self.loan_institution = ['天天测试银行']self.write_data(self.title,0,line=1)#标题内容和格式写入# 数据导入的条数data_num = 60000# 进件号写入bill_code = self.create_data_billcode(data_num)#获取5个随机字符j = self.title_local(u'进件号')self.write_data(bill_code, j, line=0)#对第一列进行写入,写入字段存放在lrst中#批次号写入batch_codes = self.create_data(batch_code,data_num)a = self.title_local(u'批次号')self.write_data(batch_codes, a, line=0)#委案金额写入commit_moneys = self.create_data(commit_money, data_num)a = self.title_local(u'委案金额')self.write_data(commit_moneys, a, line=0)#最新欠款金额写入latest_debt_moneys = self.create_data(latest_debt_money, data_num)a = self.title_local(u'最新欠款金额')self.write_data(latest_debt_moneys, a, line=0)#其它固定写入commit_dates, limit_dates, product_types, borrower_idnumbers, borrower_phones, loan_institutions = self.only_create_data(data_num)#委案时间写入aa = self.title_local(u'委案时间')self.write_data(commit_dates, aa, line=0)#退案时间写入bb = self.title_local(u'退案时间')self.write_data(limit_dates, bb, line=0)#产品类型写入cc = self.title_local(u'产品类型')self.write_data(product_types, cc, line=0)#身份证写入dd = self.title_local(u'身份证')self.write_data(borrower_idnumbers, dd, line=0)#手机号写入ee = self.title_local(u'手机')self.write_data(borrower_phones, ee, line=0)#贷款机构写入ff = self.title_local(u'贷款机构')self.write_data(loan_institutions, ff, line=0)#姓名写入i = self.title_local(u'姓名')brrower_name = self.create_data_name(data_num) # 获取5个随机字符self.write_data(brrower_name, i, line=0)book.save(self.ecl)return filenamedef write_data(self,lst,num,line=0):""":param lst: 写入的字段内容的列表:param num: num来控制写入的是固定第几行第几列:param line: 判断写入的是一行还是一列:return: none"""if line == 0:for i,item in enumerate(lst):self.sheet1.write(i+1, num, item)else:for i,item in enumerate(lst):self.sheet1.write(num, i, item)def title_local(self,str):for i, item in enumerate(self.title):if item == str:return i#进件号生成的随机算法def create_data_billcode(self,number):lrst=[]la = ['SZ','PH','HW','KL','WE','TY','DH','Z','H','W','L','E','Y','Q','SZK','PHK','HWK','KLK','WEK','TYK','DHK','SRZ','PRH','HRW','KRL','WRE','TRY','DRH','SLZ','PLH','HLW','KLL','WLE','TLY','DLH','SZL','PHL','HWL','KLL','WEL','TYL','DHL''DRH', 'SLkZ', 'PkLH','HLkW', 'KLkL', 'WLkE', 'TLkY', 'DLkH', 'SkZL', 'PkHL', 'HWkL', 'KLkL', 'WEkL', 'TkYL', 'DkHL']la1 = ['SZ', 'PH', 'HW', 'KL', 'WE', 'TY', 'DH', 'Z', 'H', 'W', 'L', 'E', 'Y', 'Q', 'SZK','PHK', 'HWK', 'KLK', 'WEK', 'TYK', 'DHK', 'SRZ', 'PRH', 'HRW', 'KRL', 'WRE', 'TRY','DRH', 'SLZ', 'PLH', 'HLW', 'KLL', 'WLE', 'TLY', 'DLH', 'SZL', 'PHL', 'HWL', 'KLL', 'WEyL', 'TyYL', 'DyHL','DyRH','SLkZ', 'PkLH','HLkW', 'KLkL', 'WLkE', 'TLkY', 'DLkH', 'SkZL', 'PkHL', 'HWkL', 'KLkL', 'WEkL', 'TkYL', 'DkHL''SZ', 'PH', 'HW','K2L', 'W2E', 'T2Y', 'D2H', '2Z', '2H', '2W', '2L', '2E', '2Y', '2Q', '2SZK','PHK', 'HWK', 'KLK', 'WEK', 'TYK', 'DHK', 'SRZ', 'PRH', 'HRW', 'KRL', 'WRE', 'TRY','DRH', 'SLZ', 'PLH', 'HLW', 'KLL', 'WLE', 'TLY', 'DLH', 'SZL', 'PHL', 'HWL', 'KLL', 'WEyL', 'TyYL',]for a in range(1,number+1):i = str(random.randint(0, 1000000000000))for j in la:jk=jj = random.choice(la1)ha = jk + '-' + self.da_a + '-' + i+jlrst.append(ha)return lrst#姓名生成的随机算法def create_data_name(self,number):lrst = []la = ['张', '周', '吴', '谢', '李', '高', '汤','曹', '陈', '欧阳', '慕容', '黄', '袁', '吕']lb = ['具', '国', '暮', '各', '色', '形', '者','换', '与', '欧', '各', '力', '固', '体','为', '而', '尔', '风', '哦','形', '黯', '器', '个', '昂', '瘦', '力', '刻', '他']lc = ['深', '和', '落', '省', '彩', '呈', '的','谎', '和', '妔', '给', '彩', '呈', '的','框', '和', '量', '为', '强','而', '的', '及', '和', '联', '给', '肉', '开', '费']for a in range(1, number+1):i = random.choice(la)j = random.choice(lb)k = random.choice(lc)ha = i + j + klrst.append(ha)return lrst#其它数据生成算法def create_data(self,la,number):""":param la: 随机数列:param number: 生成几条数据:return: 数据写集合"""lrst = []for a in range(1, number+1):i = random.choice(la)j = str(random.randint(0, 1000))ha = i+jlrst.append(ha)return lrstdef only_create_data(self,data_num):commit_dates = []limit_dates = []product_types = []borrower_idnumbers = []borrower_phones = []loan_institutions = []latest_debt_moneys = []for b in range(1,data_num+1):aa = random.choice(self.commit_date)bb = random.choice(self.limit_date)cc = random.choice(self.product_type)dd = random.choice(self.borrower_idnumber)ee = random.choice(self.borrower_phone)ff = random.choice(self.loan_institution)commit_dates.append(aa)limit_dates.append(bb)product_types.append(cc)borrower_idnumbers.append(dd)borrower_phones.append(ee)loan_institutions.append(ff)return commit_dates,limit_dates,product_types,borrower_idnumbers,borrower_phones,loan_institutions#将不是今天生成的文件删除def clear_file(self):da = time.strftime("%Y.%m.%d/%H-%M-%S", time.localtime())da_a = str(da.split('/')[0])path = os.path.dirname(os.path.abspath('.')) + '\config_file\case_import'lrst = []for file in os.listdir(path):if da_a not in file:lrst.append(file)if len(lrst) == 0:logger.info("没有需要删除的历史文件")else:for file in lrst:os.remove(os.path.join(path,file))#注意返回的了lsrt是包含标题的def get_data(self,module):lsrt = []line = self.title_local(module)ExcelFile = xlrd.open_workbook(self.ecl)sheet = ExcelFile.sheet_by_index(0)lsrt = sheet.col_values(line)#module列内容return lsrtif __name__ == '__main__':a=file_process()a.create_excel_file()
整段代码的基本框架思路已经给出,需要扩展的可以继续扩展,分享快乐,一起进步。
其它学习内容分享:
接口自动化测试
selenium自动化测试
python3如何随机生成大数据存储到指定excel文档里相关推荐
- Requests+Etree+BeautifulSoup+Pandas+Path+Pyinstaller应用 | 获取页面指定区域数据存入html、excel文档
Requests+Etree+BeautifulSoup+Pandas+Path应用 | 获取页面指定区域数据存入html.excel文档 1 需求来源 2 需求细节 3 设计分析 4 技术栈 5 设 ...
- Java下使用Apache POI生成具有三级联动下拉列表的Excel文档
使用Apache POI生成具有三级联动下拉列表的Excel文档: 具体效果图与代码如下文. 先上效果图: 开始贴代码,代码中部分测试数据不影响功能. 第一部分(核心业务处理): 此部分包含几个方面: ...
- Java 实现数据库数据 导入 导出成Excel文档的功能
1.创建导入 导出工具类,写入其导入和导出方法 导出成外部文件: public static ResponseEntity<byte[]> emp2Excel(List<Emp> ...
- python对excel数据求和_python对excel文档去重及求和的实例
废话不多说,估计只有我这个菜鸟废了2个小时才搞出来,主要是我想了太多方法来实现,最后都因为这因为那的原因失败了 间接说明自己对可变与不可变类型的了解,还是不够透彻 最后就用了个笨方法解决了! #cod ...
- 大数据存储技术方案介绍
2019独角兽企业重金招聘Python工程师标准>>> 大数据存储方案 Cap思想 分布式领域CAP理论, Consistency(一致性), 数据一致更新,所有数据变动都是同步的 ...
- 大数据存储技术之KUDU学习总结/快速入门
KUDU学习总结 1 基础概念 官方:https://kudu.apache.org/ 在 KUDU 之前,大数据主要以两种方式存储: • 静态数据:以 HDFS 引擎作为存储引擎,适用于高吞吐量的离 ...
- 大数据技术原理与应用——大数据存储与管理
大数据技术原理与应用--大数据存储与管理 1.分布式文件系统 (1)计算机集群结构 集群的概念 集群是指将多台服务器整合在一起,每台服务器都实现相同的业务,做相同的事情. 每台服务器并不是缺一不可,它 ...
- 【大数据存储与处理】
目录 1.任务说明 1.1任务描述 1.2架构设计 1.3数据流动图 1.4运行环境 2.数据生成 2.1 生成数据属性说明 2.2 数据生成代码 3.数据存储 3.1数据存入Hbase 3.1.1h ...
- 面向智能电网的电力大数据存储与分析应用
面向智能电网的电力大数据存储与分析应用 崔立真1, 史玉良1, 刘磊1, 赵卓峰2, 毕艳冰3 1. 山东大学计算机科学与技术学院,山东 济南 250101 2. 北方工业大学云计算研究中心,北京 1 ...
- 主流大数据存储解决方案评析
EMC Isilon:横向扩展 性能突出 大数据存储不是一类单独的产品,它有很多实现方式.EMC Isilon存储事业部总经理杨兰江概括说,大数据存储应该具有以下一些特性:海量数据存储能力,可轻松管理 ...
最新文章
- 设置JAVA环境变量
- Head First JSP---随笔四
- Java设计模式分为创建模式, 结构模式, 行为模式 3种类型
- Almost Sorted Array HDU - 5532
- leetcode - 1049. 最后一块石头的重量 II
- 54 - 算法 - 动态规划问题 连续子序列和最大
- 计算机算法设计与分析 递归实现快速排序和随机化实现快速排序
- 非零基础入门微信小程序
- C#学习之IntPtr类型
- steam怎么设公用计算机,steam如何设置家庭共享?steam设置家庭共享的方法
- 配置文件 ini toml yaml 以及 json对比
- ptc转4-20mA热电阻变送器NI1000 NTC转0-10ma输出PWM
- iface eth0 inet dhcp
- 北京大学Cousera学习笔记--5-计算导论与C语言基础--计算机的基本原理-设计程序...
- 开发在线投票系统过程遇到的问题
- 通过添加dns加速访问app store
- 用m ip衡量的计算机性能指标是,ip网络技术要求网络性能参数与指标.pdf.pdf
- 王权富贵:使用pytorch复现Fater-RCNN
- Laravel学习记录--访问器与修改器
- 期货价格什么意思(期货价格是指什么)
热门文章
- [LOJ6198] 谢特(sam+字典树合并)
- CUDNN历史版本下载地址,可跳过登录下载cudnn
- [SSL_CHX][2021-08-19]前缀和
- Android 仿自如APP裸眼3D效果
- C++中endl、ends和flush作用:
- windows 7可用软件搜索贴~(转)(申请置顶)
- Hack the box (HTB) Metatwo靶机
- 5个最好的WordPress电子商务插件比较 - 2018年
- android 方向传感器应用
- MySQL字符串数据类型