1 回答

TA貢獻1851條經驗 獲得超5個贊
credentials = files.upload()
storage_client = storage.Client.from_service_account_json(credentials)
這兩行是我認為的問題。第一個實際加載文件的內容,但第二個需要文件的路徑,而不是內容。
讓我們先解決第一行:我看到credentials在調用后傳遞你得到的credentials = files.upload()將不起作用,如它的文檔中所解釋的那樣。像你正在做的credentials那樣做,實際上并不直接包含文件的值,而是文件名和內容的字典。
假設您只上傳 1 個憑據文件,您可以像這樣獲取文件的內容(從這個 SO 答案中竊?。?/p>
from google.colab import files
uploaded = files.upload()
credentials_as_string = uploaded[uploaded.keys()[0]]
所以現在我們實際上將上傳文件的內容作為一個字符串,下一步是從中創建一個實際的憑據對象。
Github 上的這個答案顯示了如何從轉換為 json 的字符串創建憑據對象。
import json
from google.oauth2 import service_account
credentials_as_dict = json.loads(credentials_as_string)
credentials = service_account.Credentials.from_service_account_info(credentials_as_dict)
最后我們可以使用這個憑證對象創建存儲客戶端對象:
storage_client = storage.Client(credentials=credentials)
請注意,我沒有對此進行測試,所以請試一試,看看它是否真的有效。
添加回答
舉報