利用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中bisect的用法
Sep 23 Python
研究Python的ORM框架中的SQLAlchemy库的映射关系
Apr 25 Python
Python利用matplotlib生成图片背景及图例透明的效果
Apr 27 Python
Python实现发送QQ邮件的封装
Jul 14 Python
详解Python中的动态属性和特性
Apr 07 Python
python用BeautifulSoup库简单爬虫实例分析
Jul 30 Python
Python实战购物车项目的实现参考
Feb 20 Python
Python常见读写文件操作实例总结【文本、json、csv、pdf等】
Apr 15 Python
sublime3之内网安装python插件Anaconda的流程
Nov 10 Python
python爬虫中url管理器去重操作实例
Nov 30 Python
Python如何实现Paramiko的二次封装
Jan 30 Python
如何解决.cuda()加载用时很长的问题
May 24 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新建文件自动编号的思路与实现
2011/06/27 PHP
PHP中Fatal error session_start()错误解决步骤
2014/08/05 PHP
THINKPHP2.0到3.0有哪些改进之处
2015/01/04 PHP
php实现插入数组但不影响原有顺序的方法
2015/03/27 PHP
thinkPHP3.2.3实现阿里大于短信验证的方法
2018/06/06 PHP
Prototype使用指南之hash.js
2007/01/10 Javascript
文本有关的样式和jQuery求对象的高宽问题分别说明
2013/08/30 Javascript
Node.js实现批量去除BOM文件头
2014/12/20 Javascript
详解AngularJS中的表格使用
2015/06/16 Javascript
基于dropdown.js实现的两款美观大气的二级导航菜单
2015/09/02 Javascript
JS遍历数组及打印数组实例分析
2016/01/21 Javascript
jquery 遍历数组 each 方法详解
2016/05/25 Javascript
jQuery中on方法使用注意事项详解
2017/02/15 Javascript
在JS中如何把毫秒转换成规定的日期时间格式实例
2017/05/11 Javascript
jQuery滑动到底部加载下一页数据的实例代码
2017/05/22 jQuery
node.js express中app.param的用法详解
2017/07/16 Javascript
js实现轮播图的两种方式(构造函数、面向对象)
2017/09/30 Javascript
jquery动态添加以及遍历option并获取特定样式名称的option方法
2018/01/29 jQuery
浅谈webpack 自动刷新与解析
2018/04/09 Javascript
Vue+Mock.js模拟登录和表格的增删改查功能
2018/07/26 Javascript
如何在 JavaScript 中更好地利用数组
2018/09/27 Javascript
解决VUE自定义拖拽指令时 onmouseup 与 click事件冲突问题
2020/07/24 Javascript
解决vue侦听器watch,调用this时出现undefined的问题
2020/10/30 Javascript
python分析apache访问日志脚本分享
2015/02/26 Python
Python的Flask框架中的Jinja2模板引擎学习教程
2016/06/30 Python
python取均匀不重复的随机数方式
2019/11/27 Python
python 实现简单的FTP程序
2019/12/27 Python
Python标准库:内置函数max(iterable, *[, key, default])说明
2020/04/25 Python
Python3中的tuple函数知识点讲解
2021/01/03 Python
HTML5边玩边学(3)像素和颜色
2010/09/21 HTML / CSS
html5 CSS过度-webkit-transition使用介绍
2013/07/02 HTML / CSS
幼儿园教师辞职信
2014/01/18 职场文书
《小儿垂钓》教学反思
2014/02/23 职场文书
公司领导班子召开党的群众路线教育实践活动总结大会新闻稿
2014/10/21 职场文书
工程部主管岗位职责
2015/02/12 职场文书
【海涛解说】史上最给力比赛,挑战DOTA极限
2022/04/01 DOTA