海口网站制作软件,2022有创意的广告,教育网站建设需求文档,做美食类网站现状Python批处理#xff08;一#xff09;提取txt中数据存入excel
问题描述
现从冠层分析软件中保存了叶面积指数分析的结果#xff0c;然而软件保存格式为txt#xff0c;且在不同的文件夹中#xff0c;每个文件夹的txt文件数量不固定#xff0c;但是txt文件格式固定。现需…Python批处理一提取txt中数据存入excel
问题描述
现从冠层分析软件中保存了叶面积指数分析的结果然而软件保存格式为txt且在不同的文件夹中每个文件夹的txt文件数量不固定但是txt文件格式固定。现需要批量处理这些txt文件获取头三行的数据并存入excel中。
源代码
def openreadtxt(file_name):data []file open(file_name, r) # 打开文件file_data file.readlines() # 读取所有行for row in file_data:tmp_list row.split( ) # 按‘’切分每行的数据# tmp_list[-1] tmp_list[-1].replace(\n,,) #去掉换行符data.append(tmp_list) # 将每行数据插入data中return dataimport os
import xlrd
# -*- coding: utf-8 -*-
import xlsxwriter as xwdef xw_toExcel(data, fileName): # xlsxwriter库储存数据到excelworkbook xw.Workbook(fileName) # 创建工作簿worksheet1 workbook.add_worksheet(sheet1) # 创建子表worksheet1.activate() # 激活表title [序号, 叶面积指数, 平均叶倾角,天空散射辐射透过率] # 设置表头worksheet1.write_row(A1, title) # 从A1单元格开始写入表头i 2 # 从第二行开始写入数据for j in range(len(data)):insertData [data[j][id], data[j][lai], data[j][angle],data[j][sky]]row A str(i)worksheet1.write_row(row, insertData)i 1workbook.close() # 关闭表# -------------数据用例-------------if __name__ __main__:DATA[]list[A1,A2,A3,A5,A8,A9,AA1,AA2,AA3,AA4,AA5,AA6,AA7,AA8,G1,L1,Q1,R1,R2,RR1,RR2,RR3,RR4,X2,X4,X5,XX1]for i in list:count 0for root, dirs, files in os.walk(D:/Learn_Python/数据分析项目/08_叶面积指数批处理/fly/str(i)/):for file in files:ext os.path.splitext(file)[-1].lower()if ext .txt:count count 1print(i,count)n0while(ncount):print(正在读取i下第str(n)个文件)data openreadtxt(D:/Learn_Python/数据分析项目/08_叶面积指数批处理/fly/i/20230905_00str(n).txt)newdata{id:n,lai:data[2][4],angle:data[4][4],sky:data[6][10]}DATA.append(newdata)nn1DATA.append({id:1,lai:1,angle:1,sky:1})print(DATA)xw_toExcel(DATA, D:/Learn_Python/数据分析项目/08_叶面积指数批处理/output.xlsx)
代码注释
1、file open(file_name, ‘r’)。使用open()函数打开名为filename.txt的文件并以只读模式“r”打开。然后使用read()方法将文件内容读取并赋值给变量file。
2、file_data file.readlines()它会从文件中逐行读取数据并将每一行存储为一个列表中的元素。这样就可以逐行处理文件中的内容了。 3、 tmp_list row.split(’ )。将字符串 row 按空格进行分割并将分割后的结果存入列表 tmp_list 中。每个空格部分的内容都会成为列表中的一个元素。列表与其中分割的元素如下
4、workbook xw.Workbook(fileName) # 创建工作簿 worksheet1 workbook.add_worksheet(“sheet1”) # 创建子表 worksheet1.activate() # 激活表。 首先我们使用xw.Workbook()方法创建一个名为fileName的工作簿对象。然后我们使用add_worksheet()方法在工作簿中创建一个名为sheet1的子表。最后我们使用activate()方法激活该子表使其成为活动表格以激活后续操作。
5、worksheet1.write_row(row, insertData)。这是一个将数据写入Excel工作表中的代码片段。其中worksheet1 是对应的工作表对象row 是要写入的行数insertData 是要插入的数据。
6、 for root, dirs, files in os.walk。os.walk()是一个用于遍历目录树并获取目录中所有文件和子目录的函数。它返回一个生成器可以用于迭代遍历目录结构。这里的root表示当前正在遍历的目录路径dirs表示当前目录中的子目录列表files表示当前目录中的文件列表。
7、ext os.path.splitext(file)[-1].lower()。os.path.splitext(file)这个函数将文件名分割成文件名和扩展名的元组。例如如果file是example.txt那么返回的元组将是(“example”, “.txt”)。
[-1]这是Python中用于获取列表或元组中最后一个元素的索引。在这种情况下它用于获取分割后元组中的扩展名即.txt。
.lower()这是一个字符串方法用于将字符串转换为小写。这在这里使用是为了规范化扩展名以便后续处理不受大小写的影响。
最终ext变量将包含文件的小写扩展名。
8、newdata{“id”:n,“lai”:data[2][4],“angle”:data[4][4],“sky”:data[6][10]} DATA.append(newdata) 每次创建一个字典 然后在列表中将每次创建的字典添加进去。 最后将字典写入excel中
运行结果