我无法使用 python 脚本将文件上传到谷歌云?

Posted

技术标签:

【中文标题】我无法使用 python 脚本将文件上传到谷歌云?【英文标题】:I can't upload a file to google cloud using python script? 【发布时间】:2019-06-21 20:40:18 【问题描述】:

我正在尝试使用 GCP 参考上可用的 python 脚本将文件上传到谷歌云存储,但每次运行它时,我都会收到找不到 json 密钥凭据文件的文件错误,即使它与蟒蛇脚本。

错误是:

文件“c:\users\kundan\appdata\local\programs\python\python37- 32\lib\site- packages\google\cloud\client.py”,第 75 行,在 from_service_account_json 使用 io.open(json_credentials_path, "r", encoding="utf-8") 作为 json_fi: FileNotFoundError:[Errno 2] 没有这样的文件或目录:'key.json'

代码如下:

from google.cloud import storage

def upload_blob(bucket_name, source_file_name, destination_blob_name):

    storage_client = storage.Client.from_service_account_json(
    'key.json')
    bucket = storage_client.get_bucket(bucket_name)
    blob = bucket.blob(destination_blob_name)

    blob.upload_from_filename(source_file_name)

    print('File  uploaded to .'.format(
        source_file_name,
        destination_blob_name))

bucket='synersense_data'
source_file_name='gcp.txt'
destination_blob_name='prototype'

upload_blob(bucket,source_file_name,destination_blob_name)

【问题讨论】:

尝试添加key.json文件的绝对路径。 同样的错误,即使我将路径指定为 'E:folder\file.json' 【参考方案1】:

这是我用来将abc.txt 文件上传到谷歌存储的代码。

from google.cloud import storage

client = storage.Client.from_service_account_json('key.json')

def upload_blob(bucket_name, blob_name, filename):
    """ 
       Upload a blob to the bucket. 
       filename: source file name
       blob_name: destination blob name
    """
    bucket = client.get_bucket(bucket_name)
    blob = bucket.blob(blob_name)
    blob.upload_from_filename(filename)

print(upload_blob("XXXXXXXXXXXXXXX", "temp/abc.txt", "abc.txt"))

而且,下面是输出:

最初,我也遇到了和你一样的错误:

Traceback(最近一次调用最后一次):文件“gcp_upload.py”,第 9 行,在 客户端 = storage.Client.from_service_account_json('key.json') 文件 "E:\Anaconda3\envs\py35\lib\site-packages\google\cloud\client.py", 第 75 行,在 from_service_account_json 使用 io.open(json_credentials_path, "r", encoding="utf-8") as json_fi: FileNotFoundError: [Errno 2] No such file or directory: 'key.json'

我发现了我最初犯的错误。

检查 google 存储凭证 json 名称是 key.json 还是 key.json.json。可能在重命名原始 google 存储凭证 json 文件时,您将其命名为 key.json,但重命名后会自动应用 .json 扩展名,因此它会保存为 key.json.json 文件,但您传递的是 @ storage.Client.from_service_account_json()中的987654332@(实际上需要是key.json.json)。尝试使用lsdir 命令检查它。

【讨论】:

感谢您的回答。即使不是这样,它现在正在工作。我没有收到错误类型。

以上是关于我无法使用 python 脚本将文件上传到谷歌云?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用签名的 URL 将文件上传到谷歌云存储桶

使用 ajax 通过签名的 url 将文件上传到谷歌云存储

将缓冲区上传到谷歌云存储

使用 multer 和 nodejs 将图像上传到谷歌云存储时出错

春季启动图像上传到谷歌云存储桶不起作用

上传docker镜像到谷歌云平台:https://grc.io/v2/: Service Unavailable