话不多说,上代码
1.本次使用的是python3环境,使用pandas读取文件,读取速度有点慢,建议数据量50W以下
- 优化方案可以使用mysql来操作sql来完成大数据量的操作,下一篇博客介绍
# -*- coding: utf-8 -*-
import pandas as pd
import sys
#from bbb import *
import time
curr_date=time.strftime("%Y-%m-%d", time.localtime())
#文件名路径
path="C:/Users/Desktop/test.txt"
# 结果文件存放地址
res_file_path="C:/Users/Desktop/test/"
#produce_name=sys.argv[1]
#num=sys.argv[2]
# 读取文件内容 ,含表头
df = pd.read_table(path,sep='\t',header=0,dtype=str)
# 按某一行规则切割并返回该行值的数据量
def cnt_produce(produce_name):
cnt = df[df['产品']==produce_name].shape[0]
return cnt
# txt 转 excel
def Txt_To_Excel(produce_name,num1,num2,num3) :
# 要读取某一列的数据值
df_2=df[df['产品']==produce_name].iloc[num1:num2]
# 结果文件数据量
num=num2-num1
# 结果文件名
res_file_name=(res_file_path+curr_date + str(num) + '_' + str(num3) + '_' + produce_name + '.xlsx')
df_2.to_excel(res_file_name,index=False)
print(res_file_name)
#print(df_2)
#pd.read_table?
# 设置文件步长 , 此处按2000行一个文件切割
def result(produce_name):
print('开始')
pro_cnt=cnt_produce(produce_name)
print(pro_cnt)
n=0
i=0
while n <= pro_cnt :
if n > pro_cnt - 2000 :
m=pro_cnt
i=i+1
print('n='+ str(n),'m=' + str(m),'i='+str(i))
Txt_To_Excel(produce_name,n,m,i)
break
else:
m=n+2000
i=i+1
print('n='+ str(n),'m=' + str(m),'i='+str(i))
Txt_To_Excel(produce_name,n,m,i)
n=m
#print(m,n,'bbbb')
# 执行模块
if __name__ == '__main__':
print('开始')
# 传入要读取列值
result('产品名')
print('结束')
True