Python:s3中的递归glob

Python:s3中的递归glob,python,recursion,amazon-s3,boto3,glob,Python,Recursion,Amazon S3,Boto3,Glob,我试图从s3中获取拼花文件路径列表,这些路径位于子目录和子目录的子目录中,以此类推 如果是我的本地文件系统,我会这样做: import glob glob.glob('C:/Users/user/info/**/*.parquet', recursive=True) 我尝试过使用的glob方法,但是它没有递归kwarg 是否有一个函数我可以使用,或者我需要自己实现它?S3本身实际上没有子目录 支持一个前缀参数,该参数将获取bucket中给定目录中的所有对象,无论它们看起来有多深。S3本身实

我试图从s3中获取拼花文件路径列表,这些路径位于子目录和子目录的子目录中,以此类推

如果是我的本地文件系统,我会这样做:

import glob 

glob.glob('C:/Users/user/info/**/*.parquet', recursive=True)
我尝试过使用的glob方法,但是它没有递归kwarg


是否有一个函数我可以使用,或者我需要自己实现它?

S3本身实际上没有子目录


支持一个前缀参数,该参数将获取bucket中给定目录中的所有对象,无论它们看起来有多深。

S3本身实际上没有子目录


支持一个前缀参数,该参数将获取bucket中给定目录中的所有对象,无论它们看起来有多深。

我还想从s3 bucket下载最新文件,但该文件位于特定文件夹中。最初,我尝试使用glob,但找不到解决这个问题的方法。最后,我构建了以下函数来解决这个问题。您可以修改此函数以处理子文件夹

此函数将返回键值对中所有文件名和时间戳的字典

键:文件名,值:时间戳

只需传递bucket名称和前缀,即文件夹名称

import boto3

def get_file_names(bucket_name,prefix):
    """
    Return the latest file name in an S3 bucket folder.

    :param bucket: Name of the S3 bucket.
    :param prefix: Only fetch keys that start with this prefix (folder  name).
    """
    s3_client = boto3.client('s3')
    objs = s3_client.list_objects_v2(Bucket=bucket_name)['Contents']
    shortlisted_files = dict()            
    for obj in objs:
        key = obj['Key']
        timestamp = obj['LastModified']
        # if key starts with folder name retrieve that key
        if key.startswith(prefix):              
            # Adding a new key value pair
            shortlisted_files.update( {key : timestamp} )   
    return shortlisted_files

latest_filename = get_latest_file_name(bucket_name='use_your_bucket_name',prefix = 'folder_name/')

我还想从s3 bucket下载最新的文件,但它位于一个特定的文件夹中。最初,我尝试使用glob,但找不到解决这个问题的方法。最后,我构建了以下函数来解决这个问题。您可以修改此函数以处理子文件夹

此函数将返回键值对中所有文件名和时间戳的字典

键:文件名,值:时间戳

只需传递bucket名称和前缀,即文件夹名称

import boto3

def get_file_names(bucket_name,prefix):
    """
    Return the latest file name in an S3 bucket folder.

    :param bucket: Name of the S3 bucket.
    :param prefix: Only fetch keys that start with this prefix (folder  name).
    """
    s3_client = boto3.client('s3')
    objs = s3_client.list_objects_v2(Bucket=bucket_name)['Contents']
    shortlisted_files = dict()            
    for obj in objs:
        key = obj['Key']
        timestamp = obj['LastModified']
        # if key starts with folder name retrieve that key
        if key.startswith(prefix):              
            # Adding a new key value pair
            shortlisted_files.update( {key : timestamp} )   
    return shortlisted_files

latest_filename = get_latest_file_name(bucket_name='use_your_bucket_name',prefix = 'folder_name/')

我明白了,可惜没有后缀参数。哦,我会自己过滤的。谢谢我明白了,可惜没有后缀参数。哦,我会自己过滤的。谢谢请尝试使用前缀参数设置为文件夹名称的上述函数。请尝试使用前缀参数设置为文件夹名称的上述函数。