首页 > 编程知识 正文

txt批量转换word,批量把txt转换为excel

时间:2023-05-03 20:10:27 阅读:263718 作者:186

批量txt数据转换为excel

日常工作中经常会遇到大量的数据处理,尤其是大量的txt文件需要转换为excel,只能一个个粘贴复制,有了如下代码,分分钟即可完成繁琐的数据处理工作。

环境准备

需要python和python里的pandas库和openpyxl库,如果没有可以到管网下载python,并利用pip install + 库名进行pandas库和openpyxl库的安装。

代码

首先,我们需要读取文件中txt文件的名称。导入os库进行名称读取。

import osimport pandasdef file_name(file_dir): for root,dirs,files in os.walk(file_dir): dirs_name = files return dirs_namefils = list(file_name(r'E:python ideaEVP'))

利用os库,我们可以拿出file_dir目录下的root(路径)、dirs(文件夹名称)、files(文件名)。本次我们只需要文件名,所以return文件名。利用file_name函数拿出文件名后,用list函数把它变成列表,便于循环。
然后,我们需要利用pandas拿到txt中的数据。先建立一个空的DataFrame用于储存数据。

data_new = pd.DataFrame()for i in fils: data = pd.read_table(r'E:python ideaEVP\' + i,header=None,encoding='gbk',delimiter='s+',index_col=0) data_new = pd.concat((data_new,data))

然后循环fils,拿出文件名,利用pandas中的read_table函数拿出txt数据。read_table函数第一个参数为文件所在位置,header参数为有无列标签,encoding为编码方式,delimiter=’s+'这个参数可以去掉所有的空格,试用于很多空格的txt,index_col=0这个参数可以把第一列变为行索引。最后利用concat函数拼接即可完成数据读取。
最后利用pandas中的to_excel进行数据的输出,完整代码如下:

import pandas as pdimport osdef file_name(file_dir): for root,dirs,files in os.walk(file_dir): dirs_name = files return dirs_namefils = list(file_name(r'E:python ideaEVP'))# fils1 = fils[:400]# fils2 = fils[400:]# print(fils1)data_new = pd.DataFrame()for i in fils: data = pd.read_table(r'E:python ideaEVP\' + i,header=None,encoding='gbk',delimiter='s+',index_col=0) data_new = pd.concat((data_new,data))# print(data_new[0:10000000])data_new[0:10000000].to_excel(r'E:python ideaEVPevp.xlsx',sheet_name="sheet1")data_new[10000000:].to_excel(r'E:python ideaEVPevp.xlsx',sheet_name="sheet2")

由于数据量太大还进行了分块转换。

新增了一个封装更好的代码,txt文件没有列名,自己指定就好:

import pandas as pdimport osdef Search_File(dirname,suffix): ''' This function can search all files with the specified suffix in this dir. :param dirname: string, the path need to be searched :param suffix: string, the specified suffix need to be seached :return: filter_list: list, the path list need to be searched. ''' filter = [suffix] # 设置过滤后的文件类型 当然可以设置多个类型 filter_list = [] for maindir, subdir, file_name_list in os.walk(dirname): #print(maindir) #当前主目录 for filename in file_name_list: apath = os.path.join(maindir, filename)#合并成一个完整路径 portion = os.path.splitext(apath) ext = portion[1] # 获取文件后缀 [0]获取的是除了文件名以外的内容 if ext in filter: newname = portion[0] + suffix filter_list.append((newname,portion[0].split("\")[-1])) # print(filter_list) return filter_listdef acc_data_to_excel(file_name_list):'''file_name_list:the result of Search_File function.return:data_sum , DateFrame.''' data_sum = pd.DataFrame() for dir,name in file_name_list: data = pd.read_table(dir,names=["station","b1","b2","b3","year","month","day","evp","evp_e601","a1","a2"],delimiter='s+') data_sum = data_sum.append(data) return data_sum # data_sum.to_excel(r"EVP_every_day.xlsx") # print(data_sum)file_list = Search_File(r"E:python ideaEVP",".txt")data = acc_data_to_excel(file_list)data1 = data.iloc[:int(int(data.shape[0])/3),:]data2 = data.iloc[int(int(data.shape[0])/3):int(int(data.shape[0])/3)*2,:]data3 = data.iloc[int(int(data.shape[0])/3)*2:,:]data1.to_excel(r"evp_day1.xlsx",sheet_name="Sheet1")data2.to_excel(r"evp_day2.xlsx",sheet_name="Sheet1")data3.to_excel(r"evp_day3.xlsx",sheet_name="Sheet1")

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。