一个用python写的整合表格的小工具
本帖最后由 浮云。 于 2019-8-10 14:22 编辑自学python已经3个月了,遇到不少问题,感谢论坛的大佬帮助。这个脚本就一个作用:把一个文件夹下的表格汇总到一个表格里。因为工作要整合二十多份表格,都是一样的格式,就想用python写个,功能很简单,需要的可以拿去。
import pandas as pd
import numpy as np
import os,csv,sys
adr = os.path.dirname(os.path.realpath(sys.argv))#获取当前文件所在目录 __file__和realpath的差别,https://blog.csdn.net/qq_41817302/article/details/88684703
file_list =[]
def file_name(file_dir):
for root, dirs, files in os.walk(file_dir):#files:当前路径下所有非目录子文件。root,当前目录路径。dirs:当前目录下的所有子目录
for file in files:#遍历当前路径下所有非目录子文件
if os.path.splitext(file) == '.xlsx':#通过splitext把后缀跟名字分开,以列表格式,判断你要的格式,然后把路径加入进列表
file_list.append(os.path.join(root,file))
return file_list#返回列表
file_name(adr)
print('是否整合以下所有表格:')
for a in file_list:
print(a)#打印当前文件夹的所有xlsx文件路径
print(input('任意键继续'))
excel_num = pd.ExcelFile(file_list)#读取列表里的第0个路径,使用sheet_name获取工作表数量
header_data = pd.read_excel(file_list,sheet_name=len(excel_num.sheet_names)-1,header=0)#读取文件
tr_header = header_data.columns#使用colunms获取每一列的列名
header_list =np.array(tr_header).tolist()#使用tolist转化成列表
#print(header_list)
f = open('汇总.csv','a',newline='',encoding='utf-8')#创建一个汇总表格
write = csv.writer(f)#实例化对象
write.writerow(header_list)
for i in file_list:
excel = pd.ExcelFile(i)#实例化对象通过ExcelFile 获取下列sheet的个数,直接使用excel.sheet_names可以获取sheet名字
read_file = pd.read_excel(i,sheet_name=len(excel.sheet_names)-1,header = 0)#通过read_excel读取,i 是路径 ,sheet_name是要打开的工作簿,可以是工作簿名字,也可以是索引,col确定标签行
#print(read_file)
#number = read_file.shape-1
#read_file.drop(,inplace=True,axis=0) #删除标签行里指定字符的行,axis=0为行,1为列,inplace为重新赋值
tr_read_file = np.array(read_file)#通过array以及tolist把DF转化为list
read_list = tr_read_file.tolist()
print(read_list)
for i in read_list:#把获取到的数据写入
write.writerow(i)
f.close()#关闭表格
把表格和py文件放在一个文件夹下运行,运行结束就会出现一个汇总.csv的表格
pengtusheng 发表于 2019-8-10 13:48
不会英语怎么学啊! 教教下! 还有! 怎么知道 写的程序需要用到哪个函数?哪些函数有没有一个帮助文档 ...
我的英语基础也不好。。因为是自学,所以变量的名字用的都比较随意。。关于需要用到哪些函数,可以确定好制作项目以后,分解项目,比如我这个就三个步骤:
1.读取路径
2.读取表格内容
3.写入表格
然后你再一步步去查找每个步骤哪些库好用。。我是这样的。 帮顶,不会用。{:1_924:} 不会英语怎么学啊! 教教下! 还有! 怎么知道 写的程序需要用到哪个函数?哪些函数有没有一个帮助文档!集合在一起的! 有图或gif显示出来会比较直观点 楼主坚持自学,好有毅力{:1_921:} 老哥,代码的注释很详细,技术分享的很到位!谢谢了! kge369 发表于 2019-8-10 13:52
有图或gif显示出来会比较直观点
已经更新了 ywqn 发表于 2019-8-10 14:17
老哥,代码的注释很详细,技术分享的很到位!谢谢了!
哈哈哈,记性不行,为了以后方便 帮顶,同自学,三天打渔两天晒网,哈哈