[Python] How to refactor code that returns timestamps form S3?

Discussão em 'Python' iniciado por Stack, Janeiro 31, 2025.

  1. Stack

    Stack Membro Participativo

    This fails on a very large project

    def get_timestamps_from_s3_bucket(s3client: boto3.client, branch: str, s3_bucket_name :str):
    # Find all files matching the branch prefix
    response = s3client.list_objects_v2(
    Bucket=s3_bucket_name, EncodingType="url", Prefix=branch
    )
    data = response["Contents"]
    while response["IsTruncated"]:
    token = response["NextContinuationToken"]
    response = s3client.list_objects_v2(
    Bucket=s3_bucket_name, Prefix=branch, ContinuationToken=token
    )
    data = data + response["Contents"]
    data_files = []
    session_files = []
    session_info_files = []
    session_benchmarks_files = []
    # Handle branch names that contain '/'char :
    nb_extra_path_depth = len(branch.split("/"))
    for file in data:
    filename = file["Key"]
    path = filename.split("/")
    if len(path) == 3 + nb_extra_path_depth:
    data_files.append(filename)
    else:
    if path[1 + nb_extra_path_depth] == "session_benchmarks.csv":
    session_benchmarks_files.append(filename)
    print(f"{filename} - session_benchmarks_files")
    if path[1 + nb_extra_path_depth] == "session.csv":
    session_files.append(filename)
    print(f"{filename} - session_files")
    if path[1 + nb_extra_path_depth] == "session_info.csv":
    session_info_files.append(filename)
    print(f"{filename} - session_info_files")

    print(f"session_info_files = {len(session_info_files)} | session_files = {len(session_files)} | session_benchmarks_files = {session_benchmarks_files}")
    assert len(session_files) == len(session_info_files)
    assert len(session_info_files) == len(session_benchmarks_files)


    erorrs shows someting like this assert len(session_info_files) == len(session_benchmarks_files) AssertionError

    How to refactor it do get it working? I want to have an array of timestamps for further task.

    Continue reading...

Compartilhe esta Página