diff --git a/main.py b/main.py index 5d25eca..594ace0 100644 --- a/main.py +++ b/main.py @@ -17,7 +17,7 @@ from src.acquire_fund_snapshot import get_fund_list from src.acquire_fund_base import acquire_fund_base from src.fund_info.supplement import FundSupplement from src.acquire_fund_quarter import acquire_fund_quarter -from src.fund_statistic import get_special_fund_code_holder_stock_detail, all_stocks_rank,t100_stocks_rank,all_stock_holder_detail,calculate_quarter_fund_count +from src.fund_statistic import get_special_fund_code_holder_stock_detail, all_stocks_rank,t100_stocks_rank,all_stock_holder_detail,calculate_quarter_fund_total from src.fund_strategy import output_high_score_funds def main(): @@ -53,7 +53,7 @@ def main(): elif input_value == '8': all_stock_holder_detail() elif input_value == '9': - calculate_quarter_fund_count() + calculate_quarter_fund_total() elif input_value == '10': output_high_score_funds() else: diff --git a/src/fund_info/statistic.py b/src/fund_info/statistic.py index 99204b2..0274e7f 100644 --- a/src/fund_info/statistic.py +++ b/src/fund_info/statistic.py @@ -7,14 +7,15 @@ Author: luxuemin2108@gmail.com ----- Copyright (c) 2021 Camel Lu ''' -from sql_model.stock_query import StockQuery -from sql_model.fund_query import FundQuery -from utils.index import get_quarter_index, fisrt_match_condition_from_list import time import re import os import sys from pprint import pprint + +from sql_model.stock_query import StockQuery +from sql_model.fund_query import FundQuery +from utils.index import get_quarter_index, fisrt_match_condition_from_list sys.path.append('../') sys.path.append(os.getcwd() + '/src') diff --git a/src/fund_statistic.py b/src/fund_statistic.py index bb6fb83..c2c536b 100644 --- a/src/fund_statistic.py +++ b/src/fund_statistic.py @@ -16,7 +16,7 @@ from pprint import pprint import pandas as pd import numpy as np from fund_info.statistic import FundStatistic -from utils.index import get_last_quarter_str, get_stock_market, find_from_list_of_dict, update_xlsx_file, update_xlsx_file_with_sorted +from utils.index import get_last_quarter_str, get_stock_market, find_from_list_of_dict, update_xlsx_file, update_xlsx_file_with_sorted, update_xlsx_file_with_insert from utils.file_op import read_dir_all_file @@ -150,8 +150,8 @@ def t100_stocks_rank(each_statistic=None, *, quarter_index=None): if quarter_index == None: quarter_index = get_last_quarter_str(1) last_quarter_index = get_last_quarter_str(2) - output_file = './outcome/数据整理/strategy/top100_rank.xlsx' - sheet_name = quarter_index + '基金重仓股T100' + output_file = './outcome/数据整理/strategy/基金重仓股Top100.xlsx' + sheet_name = quarter_index columns = ['代码', '名称', quarter_index + '持有数量(只)', last_quarter_index + '持有数量(只)', '持有数量环比', '持有数量环比百分比', '持有数量升或降', quarter_index + '持有市值(亿元)', last_quarter_index + '持有市值(亿元)', '持有市值环比', '持有市值环比百分比', '持有市值升或降'] @@ -161,7 +161,7 @@ def t100_stocks_rank(each_statistic=None, *, quarter_index=None): stock_top_list = stock_top_list[:100] # 获取top100权重股 filter_list = stocks_compare(stock_top_list) df_filter_list = pd.DataFrame(filter_list, columns=columns) - update_xlsx_file(output_file, df_filter_list, sheet_name) + update_xlsx_file_with_insert(output_file, df_filter_list, sheet_name) # df_filter_list.to_excel(output_file, sheet_name=sheet_name) @@ -414,7 +414,7 @@ def compare(item1, item2): # Calling # list.sort(key=compare) -def calculate_quarter_fund_count(): +def calculate_quarter_fund_total(): stock_markets = ['A股/上证主板', 'A股/创业板', 'A股/科创板', 'A股/深证主板', 'A股/北交所', '港股', '其他'] for market in stock_markets: dir_path = './outcome/数据整理/stocks/' + market + '/' @@ -459,5 +459,5 @@ if __name__ == '__main__': # 获取某些基金的十大持仓股票信息 # get_special_fund_code_holder_stock_detail() - calculate_quarter_fund_count() + calculate_quarter_fund_total() # select_condition_stocks_rank() diff --git a/src/fund_strategy.py b/src/fund_strategy.py index adb9a60..db4f2ea 100644 --- a/src/fund_strategy.py +++ b/src/fund_strategy.py @@ -8,7 +8,7 @@ Author: luxuemin2108@gmail.com Copyright (c) 2021 Camel Lu ''' -from utils.index import get_last_quarter_str, update_xlsx_file +from utils.index import get_last_quarter_str, update_xlsx_file_with_insert from sql_model.fund_query import FundQuery from pprint import pprint import pandas as pd @@ -34,7 +34,7 @@ def output_high_score_funds(each_query=None, quarter_index=None): # pprint(df_high_score_funds) path = './outcome/数据整理/funds/high-score-funds.xlsx' - update_xlsx_file(path, df_high_score_funds, quarter_index) + update_xlsx_file_with_insert(path, df_high_score_funds, quarter_index) if __name__ == '__main__': diff --git a/src/utils/index.py b/src/utils/index.py index 8af783f..2010f1a 100644 --- a/src/utils/index.py +++ b/src/utils/index.py @@ -249,6 +249,29 @@ def update_xlsx_file_with_sorted(path, df_data, sheet_name, sorted_sheetnames = print("path", path) raise BaseException('更新excel失败') +def update_xlsx_file_with_insert(path, df_data, sheet_name, index = 0): + try: + if os.path.exists(path): + writer = pd.ExcelWriter(path, engine='openpyxl') + workbook = load_workbook(path) + writer.book = workbook + df_data.to_excel( + writer, sheet_name=sheet_name) + workbook = writer.book + writer.sheets = {ws.title:ws for ws in workbook.worksheets} + del workbook[sheet_name] + # workbook.remove(sheet_name) + workbook._add_sheet(writer.sheets.get(sheet_name), index) + writer.book = workbook + + writer.save() + writer.close() + else: + df_data.to_excel( + path, sheet_name=sheet_name) + except BaseException: + print("path", path) + raise BaseException('更新excel失败') def bootstrap_thread(target_fn, total, thread_count=2): threaders = []