我无法使用 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
)。尝试使用ls
或dir
命令检查它。
【讨论】:
感谢您的回答。即使不是这样,它现在正在工作。我没有收到错误类型。以上是关于我无法使用 python 脚本将文件上传到谷歌云?的主要内容,如果未能解决你的问题,请参考以下文章