首页 > 解决方案 > 如何在python中创建一个自写的静态函数库

问题描述

我有一个具有多个静态函数的 python 脚本。我想将完整的 python 脚本转换为 python 库

import pandas as pd
import numpy as np
import EA_Upload_config as cfg
import datetime

#%%
def clockPrint(sentence):
    now = datetime.datetime.now()
    date_time = now.strftime("%H:%M:%S")
    print(date_time + " : " + sentence)


def uploadToEA(df_,ds_api_name,operation_,instance,xmd_=None): #Upsert #Overwrite
    import SalesforceEinsteinAnalytics as EA
    clockPrint("Upload Process Initiated for "+instance+" instance...")
    if instance.lower() == 'commercial':
        EAS = EA.salesforceEinsteinAnalytics(env_url='https://spglobalratings.my.salesforce.com', browser='chrome')
    if instance.lower() == 'analytical':
        EAS = EA.salesforceEinsteinAnalytics(env_url='https://spglobalratingsae.my.salesforce.com', browser='chrome')

    EAS.load_df_to_EA(df_,dataset_api_name=ds_api_name, operation=operation_,xmd=xmd_,fillna=False) #Error because of fillna=False
    clockPrint("Upload Process Completed successfully for "+instance+" instance. Navigate to (Einstein Analytics --> Data Manager --> Monitor) to check progress.")


def processDate(date):
    if pd.isnull(date):
        return np.nan
    else:
        date = pd.to_datetime(date)
        date = datetime.datetime.strftime(date,"%m/%d/%Y")
        return date


if __name__ == '__main__':
    df = pd.read_csv(cfg.FILE_PATH)
    if len(cfg.DATE_COLUMNS) != 0:
        for c in cfg.DATE_COLUMNS:
            df[c] = df[c].apply(lambda x: processDate(x))

    for c in df.columns:
        if df[c].dtype == "O":
            df[c].fillna('', inplace=True)
        elif np.issubdtype(df[c].dtype, np.number):
            df[c].fillna(0, inplace=True)
        elif df[c].dtype == "datetime64[ns]":
            df[c] = df[c].apply(lambda x: processDate(x))
            df[c].fillna("", inplace=True)

    df.fillna("", inplace=True)
    for instance in cfg.INSTANCES:
        if instance.lower() == 'commercial':
            uploadToEA(df, cfg.COM_DATASET_API_NAME, cfg.COM_OPERATION, instance, cfg.COM_XMD)
        elif instance.lower() == 'analytical':
            uploadToEA(df, cfg.ANA_DATASET_API_NAME, cfg.ANA_OPERATION, instance, cfg.ANA_XMD)
        else: clockPrint("Update INSTANCES variable as ['Commercial'] or ['Analytical'] or ['Commercial','Analytical'].")

这是我想要将其转换为库的完整 python 脚本。我该怎么做?

标签: pythonfunctionpython-imaging-library

解决方案


推荐阅读