利用python如何处理百万条数据(适用java新手)


Posted in Python onJune 06, 2018

1、前言

因为负责基础服务,经常需要处理一些数据,但是大多时候采用awk以及java程序即可,但是这次突然有百万级数据需要处理,通过awk无法进行匹配,然后我又采用java来处理,文件一分为8同时开启8个线程并发处理,但是依然处理很慢,处理时长起码在1天+所以无法忍受这样的处理速度就采用python来处理,结果速度有了质的提升,大约处理时间为1个小时多一点,这个时间可以接受,后续可能继续采用大数据思想来处理,相关的会在后续继续更新。

2、安装python 

第一步首先下载python软件,在官网可以根据自己情况合理下载,大家也可以通过三水点靠木进行下载其余就是下一步搞定,然后在开始里面找到python的exe,点击开然后输入1+1就可以看出是否安装成功了.如下图

利用python如何处理百万条数据(适用java新手) 

3、IEDA编辑器如何使用python

首先我们在idea中打开设置然后点击plugins,在里面有个输入框中输入python,根据提示找到如下的这个(idea版本不同可能影响python版本)

利用python如何处理百万条数据(适用java新手) 

然后开始创建idea工程

file->New->Project->python然后出现如下图情况(其他的下一步然后就会创建工程了)

利用python如何处理百万条数据(适用java新手)

4、开发前知识准备

文件的读取,python读取文件非常的简单,我现在直接贴代码提供给大家

def readData(fileName):
 result = ""
 count=0
 with open(fileName, 'r') as f:
 for line in f.readlines():
  result += line
  count += 1
  print count
 return result

"""写入文件"""

def writeData(fileName, data):
 with open(fileName, 'a+')as f:
 f.write(data)

其中def是函数的定义,如果我们写定义一个函数直接前面加上def,返回值可以获取后直接用return即可

python我们直接采用with open('文件路径',模式) as f的方式来打开文件

模式:

r 只读 文件不存在则出错
r+ 支持读写 文件不存在则出错,写入时,会覆盖源文件
w 只写 如果文件不存在则创建文件,会覆盖源文件,如果写入内容少则保留为覆盖的内容
w+ 支持读写 同上
a 只写 如果文件不存在则创建文件,会采用追加模式
a+ 读写 同上
b 二进制读写  

跨文件引用:

同一个层级python是采用import直接导入文件名的方式,看下一个代码

import IoUtils

fileName1 = 'D:\\works\\pythons\\files\\userids.txt'
userIds = IoUtils.readData(fileName1).split('\n')
fileName2 = 'D:\\works\\pythons\\files\\records.txt'
records = IoUtils.readData(fileName2).strip()
recordsArr = records.split('\n')
count=0;
for data in recordsArr:
 count+=1
 if data.split('\t')[2] in userIds:
 IoUtils.writeData('D:\\works\\pythons\\files\\20180604.txt', data + '\n')
 print count

其他说明:

其中split和java程序的split一样,strip是去掉空格换行符等,循环(for in)模式,判断某个元素是否在数组中存在则直接使用 元素 in 数组

5、总结

如果你有数据量级别在百分的时候我建议优先可以想到python处理真的特别方便,而且很简单学习成本也很低,但是却很实用,其实awk在数据处理中也发挥很大的作用,大家可以私下学习,如果有时间我会分享一些,关于数据我这里就不提供了大家可以按照我上述代码跑就可以,更细节的我推荐看廖雪峰的python教程。

好了,以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对三水点靠木的支持。

Python 相关文章推荐
python开发之基于thread线程搜索本地文件的方法
Nov 11 Python
python中set常用操作汇总
Jun 30 Python
Python selenium 三种等待方式详解(必会)
Sep 15 Python
一步步教你用Python实现2048小游戏
Jan 19 Python
详解python websocket获取实时数据的几种常见链接方式
Jul 01 Python
python飞机大战pygame碰撞检测实现方法分析
Dec 17 Python
基于pygame实现童年掌机打砖块游戏
Feb 25 Python
Python基础之列表常见操作经典实例详解
Feb 26 Python
使用Pycharm在运行过程中,查看每个变量的操作(show variables)
Jun 08 Python
Python CategoricalDtype自定义排序实现原理解析
Sep 11 Python
python 使用三引号时容易犯的小错误
Oct 21 Python
全面介绍python中很常用的单元测试框架unitest
Dec 14 Python
Python3实现的Mysql数据库操作封装类
Jun 06 #Python
python操作redis方法总结
Jun 06 #Python
目前最全的python的就业方向
Jun 05 #Python
python多进程提取处理大量文本的关键词方法
Jun 05 #Python
使用python进行文本预处理和提取特征的实例
Jun 05 #Python
python 用正则表达式筛选文本信息的实例
Jun 05 #Python
python和shell获取文本内容的方法
Jun 05 #Python
You might like
PHP ? EasyUI DataGrid 资料取的方式介绍
2012/11/07 PHP
PHP制作3D扇形统计图以及对图片进行缩放操作实例
2014/10/23 PHP
PHP中key和current,next的联合运用实例分析
2016/03/29 PHP
PHP微信开发之查询城市天气
2016/06/23 PHP
php实现的双色球算法示例
2017/06/20 PHP
ThinkPHP3.1.x修改成功与失败跳转页面的方法
2017/09/29 PHP
jquery 结合C#后台的数组对文章的关键字自动添加链接的代码
2011/07/15 Javascript
jquery实现图片按比例缩放示例
2014/07/01 Javascript
jquery ui bootstrap 实现自定义风格
2014/11/14 Javascript
jQuery实现无限往下滚动效果代码
2016/04/16 Javascript
js图片上传前预览功能(兼容所有浏览器)
2016/08/24 Javascript
js中删除数组中的某一元素实例(无下标时)
2017/02/28 Javascript
nodejs使用express创建一个简单web应用
2017/03/31 NodeJs
vue.js异步上传文件前后端实现代码
2017/08/22 Javascript
angularjs 动态从后台获取下拉框的值方法
2018/08/13 Javascript
在vue项目实现一个ctrl+f的搜索功能
2020/02/28 Javascript
多个Vue项目部署到服务器的步骤记录
2020/10/22 Javascript
Vue 使用iframe引用html页面实现vue和html页面方法的调用操作
2020/11/16 Javascript
[01:38]DOTA2 2015国际邀请赛中国区预选赛 Showopen
2015/06/01 DOTA
深入讨论Python函数的参数的默认值所引发的问题的原因
2015/03/30 Python
Python中的lstrip()方法使用简介
2015/05/19 Python
深入理解python try异常处理机制
2016/06/01 Python
详谈pandas中agg函数和apply函数的区别
2018/04/20 Python
Python3实现对列表按元组指定列进行排序的方法分析
2018/12/22 Python
python判断链表是否有环的实例代码
2020/01/31 Python
python传到前端的数据,双引号被转义的问题
2020/04/03 Python
解决Keras中Embedding层masking与Concatenate层不可调和的问题
2020/06/18 Python
使用Python实现微信拍一拍功能的思路代码
2020/07/09 Python
python如何爬取动态网站
2020/09/09 Python
给老师的道歉信
2014/01/11 职场文书
信息专业大学生自我评价分享
2014/01/17 职场文书
优秀会计求职信
2014/07/04 职场文书
四风查摆问题自查报告
2014/10/10 职场文书
关于教师节的广播稿
2015/08/19 职场文书
导游词之无锡唐城
2019/12/12 职场文书
React如何使用axios请求数据并把数据渲染到组件
2022/08/05 Javascript