溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

利用python處理百萬(wàn)條數(shù)據(jù)的案例

發(fā)布時(shí)間:2021-02-18 14:26:31 來(lái)源:億速云 閱讀:343 作者:小新 欄目:開(kāi)發(fā)技術(shù)

這篇文章將為大家詳細(xì)講解有關(guān)利用python處理百萬(wàn)條數(shù)據(jù)的案例,小編覺(jué)得挺實(shí)用的,因此分享給大家做個(gè)參考,希望大家閱讀完這篇文章后可以有所收獲。

1、前言

因?yàn)樨?fù)責(zé)基礎(chǔ)服務(wù),經(jīng)常需要處理一些數(shù)據(jù),但是大多時(shí)候采用awk以及java程序即可,但是這次突然有百萬(wàn)級(jí)數(shù)據(jù)需要處理,通過(guò)awk無(wú)法進(jìn)行匹配,然后我又采用java來(lái)處理,文件一分為8同時(shí)開(kāi)啟8個(gè)線程并發(fā)處理,但是依然處理很慢,處理時(shí)長(zhǎng)起碼在1天+所以無(wú)法忍受這樣的處理速度就采用python來(lái)處理,結(jié)果速度有了質(zhì)的提升,大約處理時(shí)間為1個(gè)小時(shí)多一點(diǎn),這個(gè)時(shí)間可以接受,后續(xù)可能繼續(xù)采用大數(shù)據(jù)思想來(lái)處理,相關(guān)的會(huì)在后續(xù)繼續(xù)更新。

2、安裝python 

第一步首先下載python軟件,在官網(wǎng)可以根據(jù)自己情況合理下載,大家也可以通過(guò)億速云進(jìn)行下載其余就是下一步搞定,然后在開(kāi)始里面找到python的exe,點(diǎn)擊開(kāi)然后輸入1+1就可以看出是否安裝成功了.如下圖

利用python處理百萬(wàn)條數(shù)據(jù)的案例 

3、IEDA編輯器如何使用python

首先我們?cè)趇dea中打開(kāi)設(shè)置然后點(diǎn)擊plugins,在里面有個(gè)輸入框中輸入python,根據(jù)提示找到如下的這個(gè)(idea版本不同可能影響python版本)

利用python處理百萬(wàn)條數(shù)據(jù)的案例 

然后開(kāi)始創(chuàng)建idea工程

file->New->Project->python然后出現(xiàn)如下圖情況(其他的下一步然后就會(huì)創(chuàng)建工程了)

利用python處理百萬(wàn)條數(shù)據(jù)的案例

4、開(kāi)發(fā)前知識(shí)準(zhǔn)備

文件的讀取,python讀取文件非常的簡(jiǎn)單,我現(xiàn)在直接貼代碼提供給大家

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

"""寫(xiě)入文件"""

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

其中def是函數(shù)的定義,如果我們寫(xiě)定義一個(gè)函數(shù)直接前面加上def,返回值可以獲取后直接用return即可

python我們直接采用with open('文件路徑',模式) as f的方式來(lái)打開(kāi)文件

模式:

r只讀文件不存在則出錯(cuò)
r+支持讀寫(xiě)文件不存在則出錯(cuò),寫(xiě)入時(shí),會(huì)覆蓋源文件
w只寫(xiě)如果文件不存在則創(chuàng)建文件,會(huì)覆蓋源文件,如果寫(xiě)入內(nèi)容少則保留為覆蓋的內(nèi)容
w+支持讀寫(xiě)同上
a只寫(xiě)如果文件不存在則創(chuàng)建文件,會(huì)采用追加模式
a+讀寫(xiě)同上
b二進(jìn)制讀寫(xiě) 

跨文件引用:

同一個(gè)層級(jí)python是采用import直接導(dǎo)入文件名的方式,看下一個(gè)代碼

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

其他說(shuō)明:

其中split和java程序的split一樣,strip是去掉空格換行符等,循環(huán)(for in)模式,判斷某個(gè)元素是否在數(shù)組中存在則直接使用 元素 in 數(shù)組

關(guān)于“利用python處理百萬(wàn)條數(shù)據(jù)的案例”這篇文章就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,使各位可以學(xué)到更多知識(shí),如果覺(jué)得文章不錯(cuò),請(qǐng)把它分享出去讓更多的人看到。

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI