python⼤txt分段读取_python超⼤txt按⾏分块多线程读取⾸先:使⽤ultra edit 打开获取txt⾏数
import time, threading
import pandas as pd
from itertools import islice
‘‘‘
Reader类,继承threading.Thread
@__init__⽅法初始化
@run⽅法实现了读⽂件的操作
‘‘‘
class Reader(threading.Thread):
def __init__(self, file_name, n, nlong):
super(Reader, self).__init__()
self.file_name = file_name
self.n = n
self.nlong = nlong
self.data = pd.DataFrame(columns=[
‘发展渠道编码(全渠道)‘,‘发展渠道名称‘,‘客户id(脱敏后的移动⽤户识别码)‘,‘年龄‘,‘性别‘,‘产品名称(201907)‘,‘档位(201907)‘,‘出账收⼊(201907)‘,‘产品名称(201908)‘,‘档位(201908)‘,‘出账收⼊(201908)‘,‘产品名称
(201909)‘,‘档位(201909)‘,‘出账收⼊(201909)‘,‘产品名称(201910)‘,‘档位(201910)‘,‘出账收⼊(201910)‘,‘产品名称(201911)‘,‘档位(201911)‘,‘出账收⼊(201911)‘,‘产品名称(201912)‘,‘档位(201912)‘,‘出账收⼊
(201912)‘,‘⼊⽹时间‘,‘离⽹时间取唯⼀标识‘,‘2019年7⽉‘,‘⼯作地的经纬度⽹格‘,‘2019年7⽉居住地的经纬度⽹
格‘,‘2019年8⽉⼯作地的经纬度⽹格‘,‘2019年8⽉居住地的经纬度⽹格‘,‘2019年9⽉⼯作地的经纬度⽹格‘,‘2019年9⽉居住地的经纬度⽹格‘,‘2019年10⽉⼯作地的经纬度⽹格‘,‘2019年10⽉居住地的经纬度⽹格‘,‘2019年11⽉⼯作地的经纬度⽹
格‘,‘2019年11⽉居住地的经纬度⽹格‘,‘2019年12⽉⼯作地的经纬度⽹格‘,‘2019年12⽉居住地的经纬度⽹格‘,‘2019年11⽉每个周六10:00-15:00出现频次最多位置的经纬度⽹格‘,‘2019年11⽉每个周⽇10:00-15:00出现频次最多位置的经纬度⽹
格‘,‘2019年12⽉每个周六10:00-15:00出现频次最多位置的经纬度⽹格‘,‘2019年12⽉每个周⽇10:00-15:00出现频次最多位置的经纬度⽹格‘])
def run(self):
for line in islice(open(self.file_name,‘r‘,encoding=‘utf-8‘),self.n,None):
print(self.n)
if self.n
self.data.loc[self.n] = line.split(‘|‘)
else:
break
self.n = self.n+1
return self.data
if __name__ == ‘__main__‘:
file_name = r‘E:\work\渠道规划\2020年联通营业厅规划\甲⽅数据\移⽹话单数据.rar,北京渔⽹-⾯.rar,字段名称.xlsx\移⽹话单数据\‘
#线程数量
thread_num = 500
#起始时间
start_time = time.clock()
#txt按⾏切分n_start 起始⾏,n_end 终⽌⾏,n_size 切分⾏数
n_size= 33101
n_start = [x*n_size for x in range(thread_num)]
n_end = [(x+1)*n_size for x in range(thread_num)]
t = []
#⽣成线程
for i in range(thread_num):
t.append(Reader(file_name, n_start[i],n_end[i]))
#开启线程
for i in range(thread_num):
t[i].start()
for i in range(thread_num):
t[i].join()
#结束时间
end_time = time.clock()
print ("Cost time is %f" % (end_time - start_time))
data = pd.DataFrame(columns=[
‘发展渠道编码(全渠道)‘,‘发展渠道名称‘,‘客户id(脱敏后的移动⽤户识别码)‘,‘年龄‘,‘性别‘,‘产品名称(201907)‘,‘档位(201907)‘,‘出账收⼊(201907)‘,‘产品名称(201908)‘,‘档位(201908)‘,‘出账收⼊(201908)‘,‘产品名称
(201909)‘,‘档位(201909)‘,‘出账收⼊(201909)‘,‘产品名称(201910)‘,‘档位(201910)‘,‘出账收⼊(201910)‘,‘产品名称(201911)‘,‘档位(201911)‘,‘出账收⼊(201911)‘,‘产品名称(201912)‘,‘档位(201912)‘,‘出账收⼊
(201912)‘,‘⼊⽹时间‘,‘离⽹时间取唯⼀标识‘,‘2019年7⽉‘,‘⼯作地的经纬度⽹格‘,‘2019年7⽉居住地的经纬度⽹
python怎么读取txt
格‘,‘2019年8⽉⼯作地的经纬度⽹格‘,‘2019年8⽉居住地的经纬度⽹格‘,‘2019年9⽉⼯作地的经纬度⽹格‘,‘2019年9⽉居住地的经纬度⽹格‘,‘2019年10⽉⼯作地的经纬度⽹格‘,‘2019年10⽉居住地的经纬度⽹格‘,‘2019年11⽉⼯作地的经纬度⽹
格‘,‘2019年11⽉居住地的经纬度⽹格‘,‘2019年12⽉⼯作地的经纬度⽹格‘,‘2019年12⽉居住地的经纬度⽹格‘,‘2019年11⽉每个周六10:00-15:00出现频次最多位置的经纬度⽹格‘,‘2019年11⽉每个周⽇10:00-15:00出现频次最多位置的经纬度⽹
格‘,‘2019年12⽉每个周六10:00-15:00出现频次最多位置的经纬度⽹格‘,‘2019年12⽉每个周⽇10:00-15:00出现频次最多位置的经纬度⽹格‘])
for i in t:
data = data.append(i.data)