1. 程式人生 > >python 二維列表對映寫入csv檔案, 並上傳OSS

python 二維列表對映寫入csv檔案, 並上傳OSS

# -*- coding: utf-8 -*-
import sys
import oss2
from datetime import datetime
import csv
import traceback
import logging
import pandas as pd
import os
import random



PREFIX = 'http://'

class cexporcsv():
    # datasrcset 是一個列表
    # csvheader 也是一個列表
    # ossinfo ={ACCESS_KEY_ID,ACCESS_KEY_SECRET,ENDPOINT,BUCKETNAME_XLS}
# result = { 'errorcode':0 , 'osspath':osspath} def export_to_oss(self,datasrcset,csvheader,ossinfo, urlload): result = {} try: if not datasrcset: result['errorcode'] = -1 result['errortext'] = 'the resultset %s is not exists' % datasrcset return
result osspath = datetime.now().strftime('%Y%m%d%H%M%S')+'_'+str(random.randint(0, 99))+ '.csv' csvfile = pd.DataFrame(columns=csvheader, data=datasrcset) csvfile.to_csv(osspath, encoding = "utf-8") if os.path.exists(osspath): auth = oss2.Auth
(ossinfo['ACCESS_KEY_ID'], ossinfo['ACCESS_KEY_SECRET']) bucket = oss2.Bucket(auth, ossinfo['ENDPOINT_OUT'], ossinfo['BUCKETNAME_XLS']) if urlload: bucket.put_object('%s/%s' %(urlload,osspath), open(osspath)) result['osspath'] = PREFIX + ossinfo['BUCKETNAME_XLS'] + '.' + ossinfo['ENDPOINT_OUT'] + '/'+urlload+'/' + osspath else: bucket.put_object('uploadurl/%s' % (urlload, osspath), open(osspath)) result['osspath'] = PREFIX + ossinfo['BUCKETNAME_XLS'] + '.' + ossinfo['ENDPOINT_OUT'] + '/uploadurl/' + osspath # 刪除本地臨時檔案 os.remove(osspath) result['errorcode'] = 0 return result else: result['errorcode'] = -1 result['errortext'] = 'no such location file:%s'%file logging.error('no such location file') except Exception, ex: result['errorcode'] = -1 result['errortext'] = '%s_%s:%s' % (traceback.print_exc(), Exception, ex) return result