如何使用cloudpathlib从AWS S3批量下载仅后缀为csv的文件
解决方案
错误原因
你之前的写法不生效是因为CloudPath构造方法不支持直接解析通配符,它会把你传入的s3://dir1/dir2/*.csv当做一个实际存在的路径处理,自然无法匹配到目标文件。
正确实现
借助cloudpathlib自带的glob方法即可实现csv文件的匹配下载,无需引入boto3,也不需要你手动实现S3文件遍历逻辑:
from cloudpathlib import CloudPath # 初始化目标根目录,不要携带通配符 root_dir = CloudPath("s3://dir1/dir2/") to_path = "./本地保存路径" # 仅匹配当前目录下的csv文件并批量下载 [csv_file.download_to(f"{to_path}/{csv_file.name}") for csv_file in root_dir.glob("*.csv")]
如果你需要同时匹配根目录下所有子目录内的csv文件,把glob("*.csv")替换为glob("**/*.csv")即可。
说明
该方案的文件遍历、后缀匹配逻辑都由cloudpathlib底层封装实现,你不需要手动写循环遍历S3对象的代码,符合你的需求。
内容的提问来源于stack exchange,提问作者pnna
相关产品推荐
相关产品推荐

