1. 程式人生 > >讀取通達信本地資料,並儲存在mongodb資料庫

讀取通達信本地資料,並儲存在mongodb資料庫

# coding: UTF-8
from struct import *

import os
import sys


    
def day2csv_data(dirname,fname,targetDir):
    ofile=open(dirname+os.sep+fname,'rb')
    buf=ofile.read()
    ofile.close()
     
    ifile=open(targetDir+os.sep+fname[:-4]+'.csv','w')
    num=len(buf)
    no=int(num/32)
    b=0
    e=32
    line='' 
    linename=str('date')+' ,'+str('open')+', '+str('high')+' ,'+str('low')+', '+str('close')+' ,'+str('amout')+', '+str('vol')+' ,'+str('str07')+''+'\n'
      # print line
    ifile.write(linename)
    for i in range(no):
       a=unpack('IIIIIfII',buf[b:e])
       line=str(a[0])+' ,'+str(a[1]/100.0)+', '+str(a[2]/100.0)+', '+str(a[3]/100.0)+', '+str(a[4]/100.0)+' ,'+str(a[5]/10.0)+', '+str(a[6])+' ,'+str(a[7])+''+'\n'
      # print line
       ifile.write(line)
       b=b+32
       e=e+32
    ifile.close()
    


pathdir='c:/new_tdx/vipdoc/sz/lday'
targetDir='c:/new_tdx/vipdoc/sz/pythondata/'
listfile=os.listdir(pathdir)
listfile[2][2:-4] 

for f in listfile:
   
    day2csv_data(pathdir,f,targetDir)
else:
    print ('The for '+pathdir+' to '+targetDir+'  loop is over')

import os
import sys
import pymongo
import pandas as pd
file_path='c:/new_tdx/vipdoc/sz/pythondata/'
listfile=os.listdir(file_path)
def save_df_mongodb(file_path):
    client=pymongo.MongoClient()
    listfile=os.listdir(file_path)
    for f in listfile:
        file_url=file_path+f
        df=pd.read_csv(file_url)
        conn=client.db[f[2:-4]]
        conn.insert_many(df.to_dict(orient='records'))
        print(f[2:-4])
save_df_mongodb(file_path)
#獲取mongodb資料庫資料程式碼
name_list=[]
file_path='c:/new_tdx/vipdoc/sh/pythondata/'
listfile=os.listdir(file_path)
for f in listfile:
    name_list.append(f[2:-4])
len(name_list)
df=pd.DataFrame(name_list)
df.columns=['stock_name']
df.to_csv('mongodb_stock_name.csv')