看完这篇文章,你能收获的是:
1、可模糊查找含xx的excel,返回其路径
2、可自动读取含xx的excel,保存为DataFrame
3、可自动读取某文件夹下所有的文件对应路径
小A经常要做表,而且每周要用到的表名都是从报表系统最新导出来的表,然后再读取到python里去处理。
那小A就发愁了,每周都导表-读表,导表的动作省不了,有没有一种可能,就是读表我让python自己完成,每周要读取的excel文件都是固定的,我导出来,不用做任何操作,注意,不用做任何操作,不用对excel改名,然后运行python,就可以读取进来呢~
于是,小A决定用以下这个函数实现,思路是什么呢?
1)首先,小A建一个文件夹,这个文件夹的作用是为了提前告诉python,你别给我读其他的,就读这个文件夹,也就是我们函数find_excel_path()中path的赋值;
2)接着,小A总结了以下每次要用到的这几张表,必含的关键字是什么。关键字的要求是必须能够准确区分1张表。比如表1叫“金融产品成交明细”、表2“金融产品委托明细”,那关键词name = ‘金融产品成交’,就能唯一确定表1了;
3)然后,就直接输入函数 find_excel_path(‘金融产品成交’)保存为变量path,再用***read_excel()***函数去调用,即可。
后续,这个代码可以固化下来,每次把表格下载后,放到path的路径下,就可以自动读取到python,储存为数据框df了~
def find_excel_path(name):
path = r'D:\001.mywork\py_\example' #设置的查找文件目录,目的是为了缩小查找范围
files = os.listdir(path)# 获取文件夹下的所有文件
# 模糊搜索
for file in files:
# 查询名字中含有"name"的文件
if name in file:
abs_path = os.path.join(path,file) #os.path.join() 函数是连接制造文件路径
print('查找内容参考路径:%s' % (abs_path))
return abs_path
假如我想读取含“学生成绩表”的文件路径,这样我能用以读取excel的方式自动读取它。
abs_path = find_excel_path('成绩表')
df = pd.read_excel(abs_path)
df.head()
搞定!!!!!!
如果大家在实际处理中,只有1张表格的话,用上述函数直接改name参数调用即可,涉及到多张表,用以下循环,快速读取做处理。
for ifile in files:
#遍历path路径下所有的files,并读取
abs_path = os.path.join(path,ifile)
print(abs_path)
_df = pd.read_excel(abs_path)
#保存为_df,可以对_df调用其他你写好的方法来处理。
今天的分享就到这里,感谢阅读!