marketTrade/tools/get_shares_stats.py
Mark 05e1a44353 finalized analyzer
added get_line_count function to count lines effectively
changed the internal backend of comparing file sizes
added saving to json
2022-09-22 11:19:27 +03:00

41 lines
1.5 KiB
Python

import market_trade.constants
import json
def get_lines_count(filepath):
"""
This function gets filepath and returns count of the lines inside it (by default delimiter)
:param filepath: pathlike, preffered to be pathlib
:return: integer, coutn of the lines
"""
with open(filepath, mode="r", encoding="utf-8") as counted_file:
line_count = sum(1 for _ in counted_file)
return line_count
if __name__ == '__main__':
shares_maxsize_by_figi = {}
for figi_dir in market_trade.constants.SHARES_TRADES_PATH.iterdir():
# we check if the path is dir, because there are unwanted files present
if figi_dir.is_dir():
# compiling all the shares files to list
shares_filepaths = list(figi_dir.iterdir())
# getting maximum file by line count
maxsize_shares_filepath = max(shares_filepaths, key=get_lines_count)
# setting maximum file value
shares_maxsize_by_figi[figi_dir.name] = get_lines_count(maxsize_shares_filepath)
# sorting the liquidity stats by the size
shares_sorted_by_liquidity = dict(sorted(shares_maxsize_by_figi.items(),
key=lambda dict_item: dict_item[1],
reverse=True))
# saving them as a json stats file
with open(market_trade.constants.SHARES_STATS_PATH, mode="w", encoding="utf-8") as stats_file:
json.dump(shares_sorted_by_liquidity, stats_file, ensure_ascii=False)