Считайте объект из Alibaba OSS и измените его с помощью pandas python

Итак, мои данные находятся в формате файлов csv в корзине OSS в Alibaba Cloud. В настоящее время я выполняю сценарий Python, в котором:

  1. Я загружаю файл на свой локальный компьютер.
  2. Внесите изменения с помощью скрипта Python на моем локальном компьютере.
  3. Храните его в облаке AWS.

Мне нужно изменить этот метод и запланировать задание cron в Alibaba Cloud, чтобы автоматизировать запуск этого скрипта. Скрипт Python будет загружен в Управление задачами Alibaba Cloud.

Итак, новые шаги будут такими:

  1. Прочтите файл из ведра OSS в Pandas.
  2. Изменить - слияние с другими данными, изменение некоторых столбцов. - Будет сделано в пандах.
  3. Сохраните измененный файл в AWS RDS.

Я застрял на самом первом шаге. Журнал ошибок: «Модуль не найден» для OSS2 и pandas.

Как правильно это делать?

Это черновик моего сценария (о том, как мне удалось выполнить сценарий на моем локальном компьютере):

      import os,re
import oss2 -- **throws an error. No module found.**
import datetime as dt
import pandas as pd -- **throws an error. No module found.**
import tarfile
import mysql.connector
from datetime import datetime
from itertools import islice
dates = (dt.datetime.now()+dt.timedelta(days=-1)).strftime("%Y%m%d")
def download_file(access_key_id,access_key_secret,endpoint,bucket):

    #Authentication
    auth = oss2.Auth(access_key_id, access_key_secret)

    # Bucket name
    bucket = oss2.Bucket(auth, endpoint, bucket)

    # Download the file
    try:
        # List all objects in the fun folder and its subfolders.
        for obj in oss2.ObjectIterator(bucket, prefix=dates+'order'):
            order_file = obj.key
            objectName = order_file.split('/')[1]
            df = pd.read_csv(bucket.get_object(order_file)) # to read into pandas
            # FUNCTION to modify and upload
        print("File downloaded")
    except:
        print("Pls check!!! File not read")
    return objectName

1 ответ

      import os,re
import oss2 
import datetime as dt
import pandas as pd 
import tarfile
import mysql.connector
from datetime import datetime
from itertools import islice

import io ## include this new library 

dates = (dt.datetime.now()+dt.timedelta(days=-1)).strftime("%Y%m%d")
def download_file(access_key_id,access_key_secret,endpoint,bucket):

    #Authentication
    auth = oss2.Auth(access_key_id, access_key_secret)

    # Bucket name
    bucket = oss2.Bucket(auth, endpoint, bucket)

    # Download the file
    try:
        # List all objects in the fun folder and its subfolders.
        for obj in oss2.ObjectIterator(bucket, prefix=dates+'order'):
            order_file = obj.key
            objectName = order_file.split('/')[1]


            bucket_object = bucket.get_object(order_file).read() ## read the file from OSS 
            img_buf = io.BytesIO(bucket_object)) 

            df = pd.read_csv(img_buf) # to read into pandas
            # FUNCTION to modify and upload
        print("File downloaded")
    except:
        print("Pls check!!! File not read")
    return objectName
Другие вопросы по тегам