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

如何在Python中执行bash命令获取S3桶最新文件并使用pandas读取

实现方案

前置注意事项

如果你的S3桶未挂载到本地文件系统,不能直接用本地ls命令,需要先安装AWS CLI,将筛选命令替换为S3专用的查询命令:
aws s3 ls s3://test-bucket/folder1/subd1/datafiles/ --recursive | sort | tail -n 1 | awk '{print $4}'
如果已经完成S3挂载到本地对应目录,直接使用你原有ls -t a1*|head -1命令即可。

核心实现代码

Python中执行shell命令并捕获输出推荐使用subprocess标准库,无需安装第三方依赖,示例如下:

import subprocess
import pandas as pd
import os

# 切换到S3挂载后的目标目录,使用aws cli命令的场景可省略这步
os.chdir("/你挂载S3后对应的本地目录路径/s3/test-bucket/folder1/subd1/datafiles/")

# 执行shell命令捕获输出
# 未挂载S3的场景把下方单引号内的命令替换为上文提到的aws s3 ls相关命令
result = subprocess.run(
    'ls -t a1*|head -1',
    shell=True,
    capture_output=True,
    text=True
)

# 提取文件名,strip()用于去除命令输出末尾的换行符
latest_file = result.stdout.strip()

# 校验结果合法性
if not latest_file:
    raise Exception("未找到匹配的文件,请检查路径或命令是否正确")

# 读取文件,未挂载S3的场景需要拼接完整S3路径,例如f"s3://test-bucket/folder1/subd1/datafiles/{latest_file}"
df = pd.read_csv(latest_file)

参数说明

  • shell=True:允许执行带管道的复合shell命令
  • capture_output=True:捕获命令的标准输出、错误输出到返回结果中
  • text=True:指定输出为字符串格式,无需额外做字节转码

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 07:18:04