我已在S3上创建了一个密钥。
mykey.exists()
返回true
mykey.get_contents_to_filename()
生成了一个正确的文件
但是:
mykey.copy('bucket', '/backup/file')
返回:
NoSuchKey
指定的键不存在。
键= mykey
看起来我正在使用boto 2.0b4
如果该键存在,为什么会出现NoSuchKey
错误?
我错过了什么?
编辑:将密钥名称中的反斜杠更改为我实际使用的斜杠
我认为您可能遇到了密钥名称的问题。字符串“\backup\file”中的反斜杠字符实际上被解释为字符串转义,因此“\b”被替换为ASCII退格字符,“\f”被解释为ASCII换页符(有关详细信息,请参见this)。虽然这可能不是您想要的,但它确实应该仍然有效,但在boto2.0b4中密钥名称转义存在错误(现在已在github主分支中修复),这导致无法正常工作。
如果您实际上希望您的密钥名称为“\backup\file”,请在Python中指定为r'\backup\file'。这将将其视为原始字符串,不会发生任何转义处理。