• python 如何自动读取含“xx”关键字的excel文件,并返回一个DataFrame


    看完这篇文章,你能收获的是:
    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     
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    具体如何使用?

    假如我想读取含“学生成绩表”的文件路径,这样我能用以读取excel的方式自动读取它。

    abs_path =  find_excel_path('成绩表')   
    df = pd.read_excel(abs_path)
    
    df.head()
    
    • 1
    • 2
    • 3
    • 4

    搞定!!!!!!

    其他场景:指定文件下的所有表格自动化读取

    如果大家在实际处理中,只有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调用其他你写好的方法来处理。
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    今天的分享就到这里,感谢阅读!

  • 相关阅读:
    HashMap常见面试题
    可观测性-Metrics-统计每个指标的基数
    7_ROS命令行中的YAML
    如何用PHP语言实现远程语音播报
    数字验证学习笔记——SystemVerilog芯片验证12 ——句柄的使用&包的使用
    充分统计量,因子分解定理与Rao-Blackwewll定理
    C400/A8/1/1/1/00 MAX-4/11/03/128/99/1/0/00
    线代——求逆矩阵的快捷方法
    C# 简单封装异步Socket Server
    java预备知识
  • 原文地址:https://blog.csdn.net/wenniewennie/article/details/126287659