文件遍历(数据表关联获取目标文件具体路径)

业务说明:

此应用类主要实现功能:
  • 读取数据提取表字段A和字段B
  • 遍历data根目录下的所有文档
  • 判断是否有以字段A命名的目录文件,若无,执行for
  • 若有此目录,则遍历改目录下的所有文件
  • 利用字段A在产品关键字表中获取其别名字段C
  • 第二层判断是否有以字段C命名的文件
  • 无,执行for;有返回目标文件夹路径
  • 最后遍历目标路径依次执行find_total_data业务处理函数即可
import xlrd
import os
import pandas as pd


class Working_for_files(object):

    root_path = 'D:/data/'
    key_word_path = 'D:/product_name/产品关键字表.xlsx'
    get_data_path = 'D:/product_name/数据提取表.xlsx'

    def load_files(self):
        data = self.load_search_data()      # 字段A,字段B(目标处理数据)
        for i in data:
            productName = i[0]
            TradeDate = i[1]

            file_lists = os.listdir(self.root_path)  # 返回根目录下所有子目录集合

            if TradeDate in file_lists:
                # 产品关键字表信息匹配
                workbook1 = xlrd.open_workbook(self.key_word_path)
                sheet1_ = workbook1.sheet_by_name('Sheet1')
                col_1 = sheet1_.col_values(0)
                list_names = sheet1_.col_values(0)[1:]
                for product_name in list_names:

                    if product_name == productName:
                        name = sheet1_.row_values(col_1.index(product_name))
                        productName_ = name[1]
                        file_path = self.root_path + TradeDate + '/'
                        files = os.listdir(file_path)  # 返回子目录下所有文件名集合
                        for file in files:
                            if productName_ in file:
                                total_file_path_ = file_path + file
                                yield total_file_path_

    def load_search_data(self):
        i = 0
        data = pd.read_excel(self.get_data_path, header=0).ix[:,:2]
        productName = list(data['字段A'])
        for time_ in list(data['字段B']):
            yield productName[i], str(time_)[:10]
            i += 1

    def find_total_data(self, file_path):

        # 业务处理函数

        pass


    def main(self):
        files = self.load_files()
        i = 0
        for file in files:
            print(file)
            self.find_total_data(file)
            i += 1
        print('一共%d个文件' % i)


if __name__ == '__main__':
    # 主入口
    Working_for_files = Working_for_files()
    Working_for_files.main()
数据表字段样式
1、数据提取表

数据提取表

2、关键字表

关键字表

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值