代码之家  ›  专栏  ›  技术社区  ›  deltascience

从azure资源管理器目录获取文件列表花费了太多时间

  •  0
  • deltascience  · 技术社区  · 6 年前

    documentation :

    az.azure_client = core.AzureDLFileSystem(token=token, store_name=self.store_name)
    dirs = az.azure_client.listdir(azure_root_dir)
    

    这需要大约130秒,我想找到更快的方法来获取这些文件的子集(例如:上次创建的100个文件)。

    我也探索过:

    az.azure_client.ls(azure_root_dir)
    az.azure_client.glob(azure_root_dir+ '*' + str(now.year) + '*' + str(now.month) + '*') 
    

    这并不能提供更快的性能。

    1 回复  |  直到 6 年前
        1
  •  0
  •   Sajeetharan    6 年前

    您可以使用以下代码获取指定日期时间范围内的文件,

    filter to get file list in a folder, which file modification time between[start_date,end_date]
        """
        @staticmethod
        def get_files_list(path_to_folder,start_date=None,end_date=None):
            file_list = []
            if start_date and end_date:
                if isinstance(start_date,date) and isinstance(end_date,date):
                    folder_file_list = os.listdir(path_to_folder)
                    for f in folder_file_list:
                        #print os.path.getmtime(f)
                        file_mtime = date.fromtimestamp(os.path.getmtime(f))
                        if start_date <= file_mtime <= end_date:
                            file_list.append(os.path.join(path_to_folder,f))
                else:
                    print 'start or end datetime format error!'
            else:
                folder_file_list = os.listdir(path_to_folder)
                for f in folder_file_list:
                    file_list.append(os.path.join(path_to_folder,f))
            return file_list
    

    你可以从 here