Wie kann ich eine Datei in Google Cloud Storage von Python 3 hochladen? Eventuell Python 2, wenn es aus Python 3 nicht machbar ist.
Ich habe gesucht und gesucht, aber keine Lösung gefunden, die tatsächlich funktioniert. Ich habe boto ausprobiert, aber wenn ich versuche, die erforderliche .boto-Datei über gsutil config -e
zu generieren, heißt es immer wieder, dass ich die Authentifizierung über gcloud auth login
konfigurieren muss. Letzteres habe ich jedoch mehrmals gemacht, ohne dass es mir dabei geholfen hat.
Verwenden Sie die Standardbibliothek gcloud , die sowohl Python 2 als auch Python 3 unterstützt.
from gcloud import storage
from oauth2client.service_account import ServiceAccountCredentials
import os
credentials_dict = {
'type': 'service_account',
'client_id': os.environ['BACKUP_CLIENT_ID'],
'client_email': os.environ['BACKUP_CLIENT_EMAIL'],
'private_key_id': os.environ['BACKUP_PRIVATE_KEY_ID'],
'private_key': os.environ['BACKUP_PRIVATE_KEY'],
}
credentials = ServiceAccountCredentials.from_json_keyfile_dict(
credentials_dict
)
client = storage.Client(credentials=credentials, project='myproject')
bucket = client.get_bucket('mybucket')
blob = bucket.blob('myfile')
blob.upload_from_filename('myfile')
Eine einfache Funktion zum Hochladen von Dateien in einen gcloud-Bucket.
from google.cloud import storage
def upload_to_bucket(blob_name, path_to_file, bucket_name):
""" Upload data to a bucket"""
# Explicitly use service account credentials by specifying the private key
# file.
storage_client = storage.Client.from_service_account_json(
'creds.json')
#print(buckets = list(storage_client.list_buckets())
bucket = storage_client.get_bucket(bucket_name)
blob = bucket.blob(blob_name)
blob.upload_from_filename(path_to_file)
#returns a public url
return blob.public_url
Sie können eine Berechtigungsnachweisdatei mit diesem Link erstellen: https://cloud.google.com/storage/docs/reference/libraries?authuser=1#client-libraries-install-python
Bei der Installation der Google Cloud Storage-API:
pip install google-cloud
wirft ein ModuleNotFoundError
:
from google.cloud import storage
ModuleNotFoundError: No module named 'google'
Stellen Sie sicher, dass Sie wie in Cloud Storage Client Libraries Docs installieren:
pip install --upgrade google-cloud-storage
Importiert die Google Cloud-Clientbibliothek
from google.cloud import storage
import os
os.environ["GOOGLE_APPLICATION_CREDENTIALS"]="C:/Users/siva/Downloads/My First Project-e2d95d910f92.json" got credentials from //https://cloud.google.com/docs/authentication/getting-started#auth-cloud-implicit-python
Instantiiert einen Client
storage_client = storage.Client()
buckets = list(storage_client.list_buckets())
bucket = storage_client.get_bucket("ad_documents")//your bucket name
blob = bucket.blob('D:/Download/02-06-53.pdf')
blob.upload_from_filename('D:/Download/02-06-53.pdf')
print(buckets)