Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/shell/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
属性错误:';字节';对象没有属性';阅读';在python中从GCS读取.gz文件时_Python_Python 3.x_Google Cloud Platform_Google Cloud Storage - Fatal编程技术网

属性错误:';字节';对象没有属性';阅读';在python中从GCS读取.gz文件时

属性错误:';字节';对象没有属性';阅读';在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

这不是一篇重复的文章

在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.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吗?问一个新问题,我并不总是有时间,但有很多人可以在这方面提供帮助