python 二維列表對映寫入csv檔案, 並上傳OSS
阿新 • • 發佈:2019-01-28
# -*- 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