我有这个:
with open('my_file', 'r') as f_in:
for i in f_in:
response = s3.head_bucket(Bucket='i')
print(response)
我希望获取my_file中那些存储桶的存储桶属性,但我得到:
botocore.exceptions.ClientError:调用HeadBucket操作时发生错误(403):禁止
如果我只输入一个存储桶名称,也会失败
如果我对存储区名称“(Bucket ='my-bucketoweiruowi')”进行硬编码,那么它将起作用!
如果我摆脱了for循环:
var = 'my-bucketoweiruow'
response = s3.head_bucket(Bucket='var')
...由于相同的403错误而失败
我这样删除了”:
with open('my_file', 'r') as f_in:
for i in f_in:
response = s3.head_bucket(Bucket=i)
print(response)
...但是我收到另一个错误:
botocore.exceptions.ClientError:调用HeadBucket操作时出现错误(400):错误的请求”。
我有2个单独的AWS帐户,具有不同的存储桶以进行测试。行为相同。
看起来像进入循环时...断了吗?
答案 0 :(得分:0)
就像在读取“ my_file”时一样,由于某种原因,跳转到下一行时,会在存储桶名称之间添加一个空行。
这意味着,如果我使用for循环打印内容,则会得到以下输出:
bucket1
bucket2
bucket3
因此,如果我删除了这些空白行,则说明一切正常:
with open('test','r') as f:
for i in f:
a = i.rstrip('\n')
res = s3.head_bucket(Bucket=a)
print(res)
结论:函数在找到空白行时似乎会发生故障。