IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Python知识库 -> Baostock学习系列3:下载交易日明细 -> 正文阅读

[Python知识库]Baostock学习系列3:下载交易日明细

下载市场交易日明细

官方原版

下载"1990-01-01"至"2022-03-10"是否交易日的明细。
保存为: From19900101To20220310.csv 文件

import baostock as bs
import pandas as pd

#### 登陆系统 ####
lg = bs.login()
# 显示登陆返回信息
print('login respond error_code:'+lg.error_code)
print('login respond  error_msg:'+lg.error_msg)

#### 获取交易日信息 ####
rs = bs.query_trade_dates(start_date="1990-01-01", end_date="2022-03-10")  # 开始时间 结束时间
print('query_trade_dates respond error_code:'+rs.error_code)
print('query_trade_dates respond  error_msg:'+rs.error_msg)

#### 打印结果集 ####
data_list = []
while (rs.error_code == '0') & rs.next():
    # 获取一条记录,将记录合并在一起
    data_list.append(rs.get_row_data())
result = pd.DataFrame(data_list, columns=rs.fields)

#### 结果集输出到csv文件 ####
result.to_csv("./From19900101To20220310.csv", encoding="utf-8", index=False)
print(result)

#### 登出系统 ####
bs.logout()

加工改造后

对query_trade_dates() 进行封装构造新的函数TradeDates2Csv()

TradeDates2Csv()

输入参数:
input_start_date: 开始日期,格式: yyyy-mm-dd
input_end_date: 结束日期,格式: yyyy-mm-dd
input_path: 保存CSV文件路径

def TradeDates2Csv(input_start_date, input_end_date, input_path): # 输入开始时间和结束时间 时间格式为: yyyy-mm-dd
    #### 登陆系统 ####
    lg = bs.login()
    # 显示登陆返回信息
    print('login respond error_code:' + lg.error_code)
    print('login respond  error_msg:' + lg.error_msg)

    #### 获取交易日信息 ####
    rs = bs.query_trade_dates(start_date= input_start_date, end_date= input_end_date)
    print('query_trade_dates respond error_code:' + rs.error_code)
    print('query_trade_dates respond  error_msg:' + rs.error_msg)

    #### 打印结果集 ####
    data_list = []
    while (rs.error_code == '0') & rs.next():
        # 获取一条记录,将记录合并在一起
        data_list.append(rs.get_row_data())
    result = pd.DataFrame(data_list, columns=rs.fields)

    dirname, file_ab_name = os.path.split(input_path)
    filename, file_ext_name = os.path.splitext(file_ab_name)

    if file_ext_name.lower()== '.csv' :
        #### 结果集输出到csv文件 ####
        result.to_csv(input_path, encoding="utf-8", index=False)
        print(result)

        #### 登出系统 ####
        bs.logout()
    else:
        print("请确认保存路径的文件名")
        bs.logout()

为保存csv文件路径做路径拼接

输入参数:
input_path_folder: 文件夹路径
input_file_name: 保存的文件名
input_ext_name = None 文件的拓展名默认为空

FilePathJoin()

def FilePathJoin(input_path_folder, input_file_name, input_ext_name = None):
    if input_ext_name is None:
        result_path = os.path.join(input_path_folder, input_file_name.strip())
    else:
        file_full_name = input_file_name.strip() + '.'+ input_ext_name.strip()
        result_path = os.path.join(input_path_folder, file_full_name)

重新构造查询结果导出交易日明细

文件架构如下图所示:

在这里插入图片描述

源代码:

import baostock as bs
import pandas as pd
import os
import time
import datetime
import calendar


def TradeDates2Csv(input_start_date, input_end_date, input_path): # 输入开始时间和结束时间 时间格式为: yyyy-mm-dd
    #### 登陆系统 ####
    lg = bs.login()
    # 显示登陆返回信息
    print('login respond error_code:' + lg.error_code)
    print('login respond  error_msg:' + lg.error_msg)

    #### 获取交易日信息 ####
    rs = bs.query_trade_dates(start_date= input_start_date, end_date= input_end_date)
    print('query_trade_dates respond error_code:' + rs.error_code)
    print('query_trade_dates respond  error_msg:' + rs.error_msg)

    #### 打印结果集 ####
    data_list = []
    while (rs.error_code == '0') & rs.next():
        # 获取一条记录,将记录合并在一起
        data_list.append(rs.get_row_data())
    result = pd.DataFrame(data_list, columns=rs.fields)

    dirname, file_ab_name = os.path.split(input_path)
    filename, file_ext_name = os.path.splitext(file_ab_name)

    if file_ext_name.lower()== '.csv' :
        #### 结果集输出到csv文件 ####
        result.to_csv(input_path, encoding="utf-8", index=False)
        print(result)

        #### 登出系统 ####
        bs.logout()
    else:
        print("请确认保存路径的文件名")
        bs.logout()

def FilePathJoin(input_path_folder, input_file_name, input_ext_name = None):
    if input_ext_name is None:
        result_path = os.path.join(input_path_folder, input_file_name.strip())
    else:
        file_full_name = input_file_name.strip() + '.'+ input_ext_name.strip()
        result_path = os.path.join(input_path_folder, file_full_name)
    return result_path

def time_offset_cal(input_time, offset, time_type): # input_time 类型为: datetime.datetime  offset 为 int 整数
    if time_type == 'year':
        re_dt = input_time + relativedelta(years=offset)
        return re_dt
    elif time_type == 'week':
        re_dt = input_time + datetime.timedelta(weeks=offset)
        return re_dt
    elif time_type == 'month':
        re_dt = input_time + relativedelta(months=offset)
        return re_dt
    elif time_type == 'day':
        re_dt = input_time + datetime.timedelta(days=offset)
        return re_dt
    elif time_type == 'hour':
        re_dt = input_time + datetime.timedelta(hours=offset)
        return re_dt
    elif time_type == 'minute':
        re_dt = input_time + datetime.timedelta(minutes=offset)
        return re_dt
    elif time_type == 'second':
        re_dt = input_time + datetime.timedelta(seconds=offset)
        return re_dt
    elif time_type == 'microsecond':
        re_dt = input_time + datetime.timedelta(microseconds=offset)
        return re_dt
    elif time_type == 'millisecond':
        re_dt = input_time + datetime.timedelta(milliseconds=offset)
        return re_dt
    else:
        print("error")

if __name__ == "__main__":
    DstFolder = "./dstFolder/downTradeDates2Csv"
    FileName = 'MarketTradeDay'
    ExtName = 'csv'

    config_start_day = '1990-01-01'
    today_date = datetime.datetime.now()
    config_end_day = time_offset_cal(today_date, -1, 'day').strftime('%Y-%m-%d')
    str_ts = str(calendar.timegm(time.localtime()))

    ResultFileName = FileName+ '#'+ config_end_day+ '@'+ str_ts

    # print(calendar.timegm(time.gmtime())) # 世界时 时间戳
    # print(calendar.timegm(time.localtime()))  # 本地时间 时间戳

    TradeDates2Csv(config_start_day, config_end_day, FilePathJoin(DstFolder, ResultFileName, ExtName))
  Python知识库 最新文章
Python中String模块
【Python】 14-CVS文件操作
python的panda库读写文件
使用Nordic的nrf52840实现蓝牙DFU过程
【Python学习记录】numpy数组用法整理
Python学习笔记
python字符串和列表
python如何从txt文件中解析出有效的数据
Python编程从入门到实践自学/3.1-3.2
python变量
上一篇文章      下一篇文章      查看所有文章
加:2022-04-06 23:09:46  更:2022-04-06 23:10:03 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 18:35:48-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码