属性错误:';字节';对象没有属性';阅读';在python中从GCS读取.gz文件时
这不是一篇重复的文章 在python中读取GCS bucket中的.gz(zip)文件时,我面临以下问题 文件名:ABC.dat.gz content=download\u blob.read()。 AttributeError:“bytes”对象没有属性“read” 代码:属性错误:';字节';对象没有属性';阅读';在python中从GCS读取.gz文件时,python,python-3.x,google-cloud-platform,google-cloud-storage,Python,Python 3.x,Google Cloud Platform,Google Cloud Storage,这不是一篇重复的文章 在python中读取GCS bucket中的.gz(zip)文件时,我面临以下问题 文件名:ABC.dat.gz content=download\u blob.read()。 AttributeError:“bytes”对象没有属性“read” 代码: blob=bucket.blob('sftp/poc/ABC.dat.gz')) 下载的\u blob=blob.download\u as\u string() 打印(下载的\u blob) content=下载的\u
blob=bucket.blob('sftp/poc/ABC.dat.gz'))
下载的\u blob=blob.download\u as\u string()
打印(下载的\u blob)
content=下载的\u blob.read()
buff=BytesIO(content)#将内容放入文件对象
f=gzip.gzip文件(fileobj=buff)
打印(“此处有大量内容8”)
res=f.read().decode('utf-8')
打印(res)
我不确定您希望在全球范围内实现什么目标,但我认为至少您可以消除这个错误。首先,根据方法download\u as\u string
是:
(已弃用)将此blob的内容作为字节对象下载
注意:
不推荐使用的别名,用于下载\u作为\u字节()
所以你应该改用这个方法
如果我理解正确,您需要有字节
对象来创建字节
。为此,您不必对downloaded\u blob
变量执行任何操作,因为它已经是正确的类型。因此,应该工作的代码如下所示:
blob = bucket.blob('sftp/poc/ABC.dat.gz')
downloaded_blob = blob.download_as_bytes()
print(downloaded_blob)
buff = BytesIO (downloaded_blob) # put content into file object
f = gzip.GzipFile(fileobj=buff)
print('Lots of content here 8')
res = f.read().decode('utf-8')
print(res)
您正在将blob作为字节对象下载。字节类型没有任何称为read的方法,因此会出现错误。你想读什么?你已经把这个斑点读成了一个字节,谢谢克里斯。实际上,我正在尝试从GCS读取.gz文件并打印其中的内容,但是这里没有file对象,而是bytes对象。也许你想先下载zip文件,然后再解压。谢谢Chirs,我正试图下载该文件,但它没有发生,你能帮我修改上述内容吗code@YatindraKumarJanghel是吗?嗨@Wytrzymały Wiktor,@vitooh,我试着把这个逻辑放到云函数中并执行它。它给了我下面的错误。大多数时候我都会犯这个错误。AttributeError:“str”对象没有属性“blob”“如果此错误是指出现的代码,则问题一定是
存储桶的初始化问题。这超出了此代码示例的范围。由于这是不同的问题,我建议创建新的问题,添加这部分代码。@vitooh感谢您的回答。现在我可以阅读数据了。你能告诉我怎样才能把打印出来的数据上传到Bucket吗?问一个新问题,我并不总是有时间,但有很多人可以在这方面提供帮助