wake-up-neo.com

Google Cloud Storage - Wie kann ich eine Datei aus Python 3 hochladen?

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.

14
aknuds1

Verwenden Sie die Standardbibliothek gcloud , die sowohl Python 2 als auch Python 3 unterstützt.

Beispiel für das Hochladen einer Datei in den Cloud-Speicher

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')
32
aknuds1

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

6
adam shamsudeen

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

1
Dragos Vasile

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)
1
James Siva