python,谷歌云平台:无法覆盖谷歌存储桶中的文件:CRC32不匹配

问题描述

我正在使用python3客户端连接到Google存储桶,并尝试执行以下操作

  • 下载'my_rules_file.yaml'
  • 修改yaml文件
  • 覆盖文件

这是我使用的代码

from google.cloud import storage
import yaml

client = storage.Client()
bucket = client.get_bucket('bucket_name')
blob = bucket.blob('my_rules_file.yaml')
yaml_file = blob.download_as_string()

doc = yaml.load(yaml_file,Loader=yaml.FullLoader)
doc['email'].clear()
doc['email'].extend(["[email protected]"])
yaml_file = yaml.dump(doc)

blob.upload_from_string(yaml_file,content_type="application/octet-stream")

这是我从最后一行上传的错误

BadRequest: 400 POST https://storage.googleapis.com/upload/storage/v1/b/fc-sandbox-datastore/o?uploadType=multipart: {
  "error": {
    "code": 400,"message": "Provided CRC32C \"YXQoSg==\" doesn't match calculated CRC32C \"EyDHsA==\".","errors": [
      {
        "message": "Provided CRC32C \"YXQoSg==\" doesn't match calculated CRC32C \"EyDHsA==\".","domain": "global","reason": "invalid"
      },{
        "message": "Provided MD5 hash \"G/rQwQii9moEvc3ZDqW2qQ==\" doesn't match calculated MD5 hash \"GqyZzuvv6yE57q1bLg8HAg==\".","reason": "invalid"
      }
    ]
  }
}
: ('Request failed with status code',400,'Expected one of',<HTTPStatus.OK: 200>)

为什么会这样。这似乎只发生在“ .yaml文件”上。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)