利用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算法学习之计数排序实例
Dec 18 Python
Python多进程库multiprocessing中进程池Pool类的使用详解
Nov 24 Python
使用Python更换外网IP的方法
Jul 09 Python
python梯度下降法的简单示例
Aug 31 Python
对python中的 os.mkdir和os.mkdirs详解
Oct 16 Python
Python实现按逗号分隔列表的方法
Oct 23 Python
介绍一款python类型检查工具pyright(推荐)
Jul 03 Python
Python2与Python3的区别点整理
Dec 12 Python
python 解决mysql where in 对列表(list,,array)问题
Jun 06 Python
sklearn线性逻辑回归和非线性逻辑回归的实现
Jun 09 Python
python制作抽奖程序代码详解
Jan 15 Python
Python 无限级分类树状结构生成算法的实现
Jan 21 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数组函数序列之array_pop() - 删除数组中的最后一个元素
2011/11/07 PHP
PHP加密扩展库Mcrypt安装和实例
2013/11/10 PHP
Laravel 5框架学习之向视图传送数据(进阶篇)
2015/04/08 PHP
PHP MSSQL 分页实例
2016/04/13 PHP
php上传大文件设置方法
2016/04/14 PHP
php的4种常用运行方式详解
2016/12/22 PHP
PHP迭代器和迭代的实现与使用方法分析
2018/04/19 PHP
PHP添加PNG图片背景透明水印操作类定义与用法示例
2019/03/12 PHP
js中的string.format函数代码
2020/08/11 Javascript
JS无限极树形菜单,json格式、数组格式通用示例
2013/07/30 Javascript
jquery 日期控件datepicker属性详细解析
2013/11/08 Javascript
jQuery对象初始化的传参方式
2015/02/26 Javascript
jQuery实现可关闭固定于底(顶)部的工具条菜单效果
2015/11/06 Javascript
简单实现js菜单栏切换效果
2017/03/04 Javascript
JavaScript中的遍历详解(多种遍历)
2017/04/07 Javascript
Vue 实现复制功能,不需要任何结构内容直接复制方式
2019/11/09 Javascript
javascript实现打砖块小游戏(附完整源码)
2020/09/18 Javascript
vue data有值,但是页面{{}} 取不到值的解决
2020/11/09 Javascript
python socket 超时设置 errno 10054
2014/07/01 Python
详解Python迭代和迭代器
2016/03/28 Python
高质量Python代码编写的5个优化技巧
2017/11/16 Python
PyCharm 常用快捷键和设置方法
2017/12/20 Python
python在每个字符后添加空格的实例
2018/05/07 Python
用python实现将数组元素按从小到大的顺序排列方法
2018/07/02 Python
Python 获取指定文件夹下的目录和文件的实现
2019/08/30 Python
python实现控制台输出彩色字体
2020/04/05 Python
Python with语句用法原理详解
2020/07/03 Python
英国护发和美妆在线商店:Klip Shop
2019/03/24 全球购物
本科生求职简历的自我评价
2013/10/21 职场文书
行政部总经理岗位职责
2014/01/04 职场文书
反对四风问题自我剖析材料
2014/09/29 职场文书
个人批评与自我批评
2014/10/15 职场文书
2019单位介绍信怎么写
2019/06/24 职场文书
MySQL创建高性能索引的全步骤
2021/05/02 MySQL
Golang 获取文件md5校验的方法以及效率对比
2021/05/08 Golang
SQL IDENTITY_INSERT作用案例详解
2021/08/23 MySQL