【发布时间】:2021-11-03 18:26:38
【问题描述】:
所以我正在创建一个粘合作业,其中一部分是检查 s3 中是否存在路径。想象一下我有这样一条路径: s3://my-bucket/level0/level1/level2(等)
使用变量: varBucket = "我的桶" varKey = "level0/"
那么这段代码就是这样工作的:
import boto3
from botocore.errorfactory import ClientError
s3 = boto3.client('s3')
try:
s3.head_object(Bucket=varBucket, Key=varKey)
print("Path Exists")
except ClientError:
print("Path Does Not Exist")
pass
我得到“路径存在”的打印输出 但是,如果我将密钥更改为此: varKey="level0/level1/"
然后我得到“路径不存在”的打印 - 即使我知道它存在。我可以在 s3 中去那里。 几乎就好像我只能用钥匙进入 1 级,但是一旦我尝试进入下一个级别及更高级别,就会发生异常。有什么想法我哪里出错了吗?
【问题讨论】:
-
为什么要知道“路径”是否存在?使用 S3,您无需担心创建目录。
-
因为我正在构建一个每日分区数组以在具有“NumberOfDays”变量的数据框中使用以向后退。有时一天会丢失(当以前的脚本没有运行时)并且当我将数组传递到“spark.read.option("mergeSchema", "true").parquet(*bucket_path_array)" 时,如果路径不存在,那么这失败了
标签: python amazon-web-services amazon-s3 pyspark