1, 前言
因为负责基础服务, 经常需要处理一些数据, 但是大多时候采用 awk 以及 java 程序即可, 但是这次突然有百万级数据需要处理, 通过 awk 无法进行匹配, 然后我又采用 java 来处理, 文件一分为 8 同时开启 8 个线程并发处理, 但是依然处理很慢, 处理时长起码在 1 天 + 所以无法忍受这样的处理速度就采用 python 来处理, 结果速度有了质的提升, 大约处理时间为 1 个小时多一点, 这个时间可以接受, 后续可能继续采用大数据思想来处理, 相关的会在后续继续更新.
2, 安装 python
第一步首先下载 https://www.python.org/downloads/ 软件, 在官网可以根据自己情况合理下载, 其余就是下一步搞定, 然后在开始里面找到 python 的 exe, 点击开然后输入 1+1 就可以看出是否安装成功了. 如下图
3,IEDA 编辑器如何使用 python
首先我们在 idea 中打开设置然后点击 plugins, 在里面有个输入框中输入 python, 根据提示找到如下的这个(idea 版本不同可能影响 python 版本)
然后开始创建 idea 工程
file->New->Project->python 然后出现如下图情况(其他的下一步然后就会创建工程了)
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
- View Code
其他说明:
其中 split 和 java 程序的 split 一样, strip 是去掉空格换行符等, 循环 (for in) 模式, 判断某个元素是否在数组中存在则直接使用 元素 in 数组
5, 总结
如果你有数据量级别在百分的时候我建议优先可以想到 python 处理真的特别方便, 而且很简单学习成本也很低, 但是却很实用, 其实 awk 在数据处理中也发挥很大的作用, 大家可以私下学习, 如果有时间我会分享一些, 关于数据我这里就不提供了大家可以按照我上述代码跑就可以, 更细节的我推荐看廖雪峰的 python 教程.
来源: https://www.cnblogs.com/LipeiNet/p/9135324.html