1、前言 因為負責基礎服務,經常需要處理一些數據,但是大多時候採用awk以及java程式即可,但是這次突然有百萬級數據需要處理,通過awk無法進行匹配,然後我又採用java來處理,文件一分為8同時開啟8個線程併發處理,但是依然處理很慢,處理時長起碼在1天+所以無法忍受這樣的處理速度就採用python ...
1、前言
因為負責基礎服務,經常需要處理一些數據,但是大多時候採用awk以及java程式即可,但是這次突然有百萬級數據需要處理,通過awk無法進行匹配,然後我又採用java來處理,文件一分為8同時開啟8個線程併發處理,但是依然處理很慢,處理時長起碼在1天+所以無法忍受這樣的處理速度就採用python來處理,結果速度有了質的提升,大約處理時間為1個小時多一點,這個時間可以接受,後續可能繼續採用大數據思想來處理,相關的會在後續繼續更新。
2、安裝python
第一步首先下載python軟體,在官網可以根據自己情況合理下載,其餘就是下一步搞定,然後在開始裡面找到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 countView Code
其他說明:
其中split和java程式的split一樣,strip是去掉空格換行符等,迴圈(for in)模式,判斷某個元素是否在數組中存在則直接使用 元素 in 數組
5、總結
如果你有數據量級別在百分的時候我建議優先可以想到python處理真的特別方便,而且很簡單學習成本也很低,但是卻很實用,其實awk在數據處理中也發揮很大的作用,大家可以私下學習,如果有時間我會分享一些,關於數據我這裡就不提供了大家可以按照我上述代碼跑就可以,更細節的我推薦看廖雪峰的python教程。