# #google-cloud-functions #google-cloud-storage #file-copying
#google-облачные функции #google-облачное хранилище #копирование файлов
Вопрос:
У меня есть облачные функции, которые копируют и вставляют файл из одного стандартного блока в ближний блок. Я также попытался сохранить файл, открыв его как фрейм данных и записав его как фрейм данных dask. Они оба работали, но каждый раз, когда я пытаюсь загрузить файл через графический интерфейс, я получаю сообщение об ошибке XML, как указано ниже. Кто — нибудь знает, почему это происходит? Как я могу предотвратить это?
Этот XML-файл, похоже, не содержит никакой информации о стиле, связанной с ним
import base64 import json from google.cloud import storage import dask.dataframe as dd import pandas as pd def hello_pubsub(event, context): """Triggered from a message on a Cloud Pub/Sub topic. Args: event (dict): Event payload. context (google.cloud.functions.Context): Metadata for the event. """ print('here') print(event) pubsub_message = base64.b64decode(event['data']).decode('utf-8') payload = json.loads(pubsub_message) bucket_name = payload['data']['bucket_name'] print(bucket_name) blob_name = payload['data']['file_name'] print(blob_name) destination_bucket_name = 'infobip-email-uploaded' #destination_blob_name = blob_name[0:10] '.csv' destination_blob_name = 'ddf-*.csv' df = pd.read_excel('gs://' bucket_name '/' blob_name, sheet_name='Data', engine='xlrd') print('excel has been read') ddf = dd.from_pandas(df,npartitions=1, sort=True) print('dataframe has been transformed into dask') path = 'gs://' destination_bucket_name '/' destination_blob_name print('path is') print(path) ddf.to_csv(path, index=False, sep=',', header=False) destination_blob_name = blob_name[0:10] '.xlsx' copy_blob(bucket_name,blob_name,destination_bucket_name,destination_blob_name) print('File has been successfully copied') delete_blob(bucket_name,blob_name) print('File has been successfully deleted') return '200' def copy_blob(bucket_name, blob_name, destination_bucket_name, destination_blob_name): """Copies a blob from one bucket to another with a new name.""" # bucket_name = "your-bucket-name" # blob_name = "your-object-name" # destination_bucket_name = "destination-bucket-name" # destination_blob_name = "destination-object-name" storage_client = storage.Client() source_bucket = storage_client.bucket(bucket_name) source_blob = source_bucket.blob(blob_name) destination_bucket = storage_client.bucket(destination_bucket_name) blob_copy = source_bucket.copy_blob( source_blob, destination_bucket, destination_blob_name ) print( "Blob {} in bucket {} copied to blob {} in bucket {}.".format( source_blob.name, source_bucket.name, blob_copy.name, destination_bucket.name, ) ) def delete_blob(bucket_name, blob_name): """Deletes a blob from the bucket.""" # bucket_name = "your-bucket-name" # blob_name = "your-object-name" storage_client = storage.Client() bucket = storage_client.bucket(bucket_name) blob = bucket.blob(blob_name) blob.delete() print("Blob {} deleted.".format(blob_name))
Комментарии:
1. Можете ли вы загрузить файлы с помощью команд gsutil?