windpy接口提取

python2.7环境
很多语法不一样,写的莫名其妙的
api接口单天查询上线量未知

#!/usr/bin/python
# coding=utf8
import os
import xlrd  # 导入库
import openpyxl
import xlwt
import xlsxwriter
from WindPy import w
import datetime
import sys
reload(sys)
sys.setdefaultencoding('utf8')



# 定义一个函数,函数名字为get_all_excel,需要传入一个目录
def get_all_excel(dir):  #遍历文件夹中的所有excel  传入一个文件夹路径

    for root_dir, sub_dir, files in os.walk(r'' + dir) :
        # 对文件列表中的每一个文件进行处理,如果文件名字是以‘xlxs’结尾就
        # 认定为是一个excel文件,当然这里还可以用其他手段判断,比如你的excel
        # 文件名中均包含‘res’,那么if条件可以改写为
        for file in files:
            # if file.endswith('.xlsx') and 'res' in file:
            if file.endswith('.xlsx') :
                # 此处因为要获取文件路径,比如要把D:/myExcel 和res.xlsx拼接为
                # D:/myExcel/res.xlsx,因此中间需要添加/。python提供了专门的
                # 方法
                file_name = os.path.join(root_dir, file)
                # 把拼接好的文件目录信息添加到列表中
                file_list.append(file_name)


    # print str(file_list).decode("string_escape")
    print file_list

    return file_list

def open_xlsx(file_listpath):
    for xlsx_workname in file_listpath :   #遍历所有excel名字
        if "~$" not in xlsx_workname:
            xlsx =openpyxl.load_workbook(xlsx_workname)    #打开xlsx文件
            xlsx_sheets = xlsx.sheetnames
            print("正在读取文件%s"%xlsx_workname )

            for xlsl_worksheet in range (len(xlsx_sheets)):
                sheet_used = xlsx[xlsx_sheets[xlsl_worksheet]]
                sheet_name = sheet_used.title  # 获得名称
                # sheet_cols = sheet_used.max_column  # 获得列数
                sheet_nrows = sheet_used.max_row # 获得行数
                # sheet_num = xlsl_worksheet + 1

                if "记录" not in sheet_name  and   "目录"  not in sheet_name  and "入库"  not in sheet_name and "指标"  not in sheet_name : #不读取目录和记录

                    print("开始扫描工作表%s" %sheet_name)
                    for xlsx_workrow in range(0, sheet_nrows):
                        col1 = sheet_used.cell(row=xlsx_workrow+1 , column=1).value  # 查看第xlsx_workrow行第1列数据
                        if col1 is not None and len(str(col1)) == 8 :   #wind标准代码为8位
                            winddm_list.append(str(col1))
                    print("工作表%s扫描结束" %sheet_name)
    return winddm_list


def edb_query():
    w.start()   #不知道有啥用
    print winddm_list
    print len(winddm_list)
    if len(winddm_list)>100:   #超出长度截取
        querydm_list = winddm_list[1000:1020]

    # wdresult = w.edb(winddm_list,"2021-01-01", "2022-03-28")   #"Fill=Previous"为上期,不传为空

    wdresult = w.edb(querydm_list, "2019-01-27", "2021-03-28")
    if wdresult.ErrorCode != 0:
        print ("查询出错,报错信息%s"%wdresult.Data)
    if wdresult.ErrorCode == 0:
        print wdresult
        Codes_list = wdresult.Codes
        Times_list = wdresult.Times
        Data_list = wdresult.Data

    else:
        print ("未知的错误发生了")




    if wdresult.ErrorCode == 0:
        Tabel=xlsxwriter.Workbook(u'提取结果.xlsx', {'nan_inf_to_errors': True})#创建一个excel文件
        sheet1=Tabel.add_worksheet()#在该excel文件中创建一张表sheet1

        sheet1.write(0,0,"截止日期\\wind代码")#表示在该表(0,0)位置处单元格,填上数字1,诸如此类,用该方法可以给表的其他单元格



        #写入时间
        print u"正在写入时间"
        for i in range(0,len(Times_list)):
            sheet1.write(i + 1, 0,str(Times_list[i]) )

        #写入wind代码
        print u"正在写入wind代码"
        for i in range(0,len(Codes_list)):
            sheet1.write( 0,i+1,str(Codes_list[i]) )

        # 写入数据
        print u"正在写入wind数据"
        for i in range(0, len(Codes_list)):
            for j in range(0, len(Times_list)):
                sheet1.write(j+1, i+1, Data_list[i][j])




        Tabel.close()  # 保存结束
        print "end"




if __name__ == '__main__':
    file_list = []
    winddm_list = []
    Codes_list = []
    Times_list = []
    Data_list = []



    dir = r"C:\Users\admin\Desktop\compare\table"
    get_all_excel(dir)   #扫描文件夹
    open_xlsx(file_list)
    edb_query()
posted @   17。  阅读(199)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· DeepSeek “源神”启动!「GitHub 热点速览」
· 我与微信审核的“相爱相杀”看个人小程序副业
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· C# 集成 DeepSeek 模型实现 AI 私有化(本地部署与 API 调用教程)
· spring官宣接入deepseek,真的太香了~
点击右上角即可分享
微信分享提示