PythonpythonXXX是世界上最好的语言

python实现TXT转xlsx并切割文件

2021-02-09  本文已影响0人  堂哥000

话不多说,上代码

1.本次使用的是python3环境,使用pandas读取文件,读取速度有点慢,建议数据量50W以下

  1. 优化方案可以使用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
上一篇 下一篇

猜你喜欢

热点阅读