对于某些背景,此代码是较大脚本的一部分。我目前正在使用.boto配置文件作为我的信用卡。我能够使用boto API调用列出所有存储桶以及创建存储桶,但是,这部分代码给了我一些问题,它看起来很正常(代码本身实际上在以前的版本中工作,现在看来要挂断了)
#!/usr/bin/python
import boto
from boto.s3.connection import S3Connection
conn = S3Connection()
n = "zapbucketx"
rs = conn.get_all_buckets()
for b in rs:
if b.name == n:
print b.name + n
try:
conn.delete_bucket('n')
print "Bucket did not contian keys and was deleted!"
except:
print "WARNING: Bucket Contains Keys!"
ans = raw_input("Do you want to continue? (y/n)")
mod_ans = str(ans.upper())
if mod_ans == 'Y':
#print "got here"
full_bucket = conn.get_bucket(n)
print "[+] Deleting keys..."
for key in full_bucket.list():
key.delete()
print "[+] Keys deleted, Deleting Bucket"
conn.delete_bucket(n)
print "[+] Bucket deleted"
exit(0)
elif mod_ans == 'N':
print "No bucket was deleted."
exit(0)
else:
print "Please answer 'y' or 'n'."
exit(0)
exit(0)
else:
print "That bucket does not exist!"
exit(0)
似乎没有过去:
if b.name == n:
因为我在“else”语句中得到了自己的“错误”:
print "That bucket does not exist!"
我在不同的实例上尝试了代码,并仔细检查了文件中的信用卡(但是因为我可以列出存储桶,所以它似乎不是信用问题)。
非常感谢任何帮助,谢谢!
答案 0 :(得分:1)
for b in rs:
if b.name == n:
...
else:
print "That bucket does not exist!"
exit(0)
这似乎假设帐户中只有一个存储桶。如果有多个存储桶,那么这个代码是否能够正常运行就可以了:可能首先会返回存储桶zapbucketx
,也许它会赢。
看起来像你真正想要的是
else:
continue
这样循环将继续通过桶列表,直到找到zapbucketx。
另外,这条线错了:
conn.delete_bucket('n')
您想要conn.delete_bucket(n)
。
您可能还希望在delete_bucket
调用后退出,或者循环将继续到下一个存储桶名称,然后抱怨存储桶不存在。
此外,您在成功删除邮件中输入了拼写错误:" contian"