python之處理股票數據的.day文件


讀取.day文件保存在Excel中:

# "D:\StudyFiles\ClassFile\股票證券實驗報告\證券日交易行情和文本基本信息\SHday\sh000001.day"
import os import time from struct import unpack import pandas as pd # 獲取day文件然后轉換為正常文本
def read_data(fname, code): ''' 讀取通達信day數據 ''' data = [] with open(fname, 'rb') as f: buf = f.read() num = len(buf)  # 總長度
    no = num / 32  # 分塊長度
    b = 0  # 開始指針
    e = 32  # 每一個小塊的長度

    for i in range(int(no)): a = unpack('IIIIIfII', buf[b:e]) data_time = toDataTime(a[0]) openPrice = a[1] / 100.0 high = a[2] / 100.0 low = a[3] / 100.0 close = a[4] / 100.0 amount = a[5] / 100.0 vol = a[6] / 100.0
        # 把數據添加到列表
        # [股票代碼,開盤價,最高價,最低價,收盤價,成交額,成交量]
 data.append([code, data_time, openPrice, high, low, close, amount, vol]) b += 32 e += 32
    return data # 將數據轉換為時間
def toDataTime(longTime): # val = val*100
    longTime = longTime / 1000  # float 時間戳格式(1019948462.2750368)
    t = time.localtime(longTime) # 👆 輸出time.struct_time(tm_year=2002, tm_mon=4, tm_mday=28, tm_hour=7, tm_min=1, tm_sec=2, tm_wday=6, tm_yday=118, tm_isdst=0)
    week = time.strftime("%A", t)  # 輸出Sunday 星期幾
    strTime = time.strftime("%Y-%m-%d %H:%M:%S", t)  # 輸出 2002-04-28 07:01:02
    return strTime # 將目錄與檢索的文件名組合為路徑,得到一個包含所有文件的路徑
def getfileName(fname, suf): fileNames = [] for i in range(0, len(suf)): fileNames.append(fname + suf[i]) return fileNames # 檢索文件名得到一個包含所有文件名的列表
def getFileSuf(fname): suf = os.listdir(fname) return suf def getData(): data = [] fname = r'D:\StudyFiles\ClassFile\股票證券實驗報告\證券日交易行情和文本基本信息\SHday\\' suf = getFileSuf(fname)  # 股票代碼
    fileNameList = getfileName(fname, suf)  # 股票路徑
    code = [] for i in suf: code.append(i.split(".")[0]) for i in range(0, len(fileNameList)):  # 循環獲取 len(fileNameList) 數據量太大 取 10 減少數據量
 data.append(read_data(fileNameList[i], code[i])) return data # 制作表格,返回
def makeDataFrame(): col = ['股票代碼', '日期', '開盤價', '最高價', '最低價', '收盤價', '成交額', '成交量'] data = getData() suf = getFileSuf('D:\StudyFiles\ClassFile\股票證券實驗報告\證券日交易行情和文本基本信息\SHday\\') for i in range(0,len(data)): index = [j for j in range(1, len(data[i]) + 1)] df = pd.DataFrame(data[i], index=index, columns=col) saveDataFrame(df, suf[i]) # 保存表格
def saveDataFrame(df, code): codeList = code.split(".") df.to_excel("D:\StudyFiles\ClassFile\股票證券實驗報告\實驗一結果\\" + codeList[0] + ".xlsx") if __name__ == '__main__': makeDataFrame()

.day文件

運行了半個小時,終於結束:

 

 以后盡量直接寫入數據庫

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM