You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从S3 Bucket的文件Key路径中提取文件名?

如何从S3对象Key中提取文件名?

你现有代码已能获取指定路径下最后修改文件的S3 Key(示例输出:folder/sub/2023-02-03_myfile.csv),以下几种方法可以提取其中的文件名部分2023-02-03_myfile.csv:

方法1:使用os.path.basename()(推荐)

这是最简洁通用的方式,Python的os模块专门处理路径相关操作,能自动截取最后一个斜杠后的内容:

import os

# 获取最新文件的Key
latest_key = sorted_contents[0].get('Key')
# 提取文件名
file_name = os.path.basename(latest_key)
print(file_name)  # 输出:2023-02-03_myfile.csv

方法2:使用字符串split()方法

通过斜杠分割Key字符串,取最后一个元素即可:

latest_key = sorted_contents[0].get('Key')
file_name = latest_key.split('/')[-1]
print(file_name)

注意:如果Key以斜杠结尾(表示是S3目录),此方法会返回空字符串,建议先判断Key是否为文件路径。

方法3:使用pathlib.Path(Python 3.4+)

面向对象的路径处理方式,更符合现代Python风格:

from pathlib import Path

latest_key = sorted_contents[0].get('Key')
file_name = Path(latest_key).name
print(file_name)

整合到原Lambda代码的完整示例

同时加入空路径异常处理,避免索引错误:

import boto3
import os
from datetime import datetime

print('Loading function')

def lambda_handler(event, context):
    s3_client = boto3.client("s3")
    list_of_s3_objs = s3_client.list_objects_v2(Bucket="mybucket", Prefix="folder/sub/")
    
    # 检查路径下是否有文件
    if 'Contents' not in list_of_s3_objs:
        print("指定路径下无文件")
        return
    
    # 按最后修改时间倒序排序,取最新文件
    sorted_contents = sorted(list_of_s3_objs['Contents'], key=lambda d: d['LastModified'], reverse=True)
    latest_key = sorted_contents[0].get('Key')
    
    # 提取并打印文件名
    file_name = os.path.basename(latest_key)
    print(file_name)

内容的提问来源于stack exchange,提问作者Rick

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.02 16:35:21