本文正在参加「Python主题月」,详情查看活动链接
hello大家好,最近几年买股票基金的朋友是越来越多了。虽然基金不用一直盯着盘,但是也时不时的想看一下今天的收益如何。毕竟收益率和今晚足浴的时长成正相关。
背景
我们可以在各种理财网站或者App上看到实时的基金走势,但是所有这类的网站和App都不够简洁一般都是红红绿绿的过于扎眼。当你正好掏出手机美滋滋的盘算今天收益如何,正好被老板看见,然后第二天因为左脚先跨进公司年终奖给你扣一半。上述这种情况就得不偿失了,毕竟各位大佬的年终奖是很可观的。
解决渠道
如果可以在终端实时显示基金的走势和收益率就很棒了,毕竟我们只有在认真工作的时候才会打开终端。显示的信息越少越好,最好只显示一个当前所有基金收益金额。因为我只关心赚多少钱,那根线的起起落落并不是很关心。
实现过程
- 配置一个json文件,格式如下(源码在最后)
{
"000496":10000,
"004241":60000
}
key:000496 是基金代码,打开你的基金一般都在基金名称下面 value:10000 是购买该基金的金额
- 读取json文件
# 读取text基金编号和对应资金
def read_fund_code(self):
f = open("fundCode.txt","r")
fund_map = json.load(f)
self.fund_code_map = fund_map
f.close()
- 使用grequests并发请求所有基金走势信息并用prettytable格式化数据为表格,可以定制表格输出自己想要的信息
def request_fund_data(self):
x = PrettyTable(["code", "name", "估算净值","盈利"])
x.align["code"] = "|"
x.padding_width = 0
req_list = []
for code in self.fund_code_map.keys():
request_url = self.base_url + code + ".js"
req_list.append(grequests.get(request_url))
res_list = grequests.map(req_list)
for res in res_list:
list = re.findall(r'[(](.*?)[)]', res.text)
code = json.loads(list[0])['fundcode']
name = json.loads(list[0])['name']
gszzl = float(json.loads(list[0])['gszzl'])
yl = gszzl*float(self.fund_code_map[code])/100.00
x.add_row([code,name,gszzl,float('%.2f' % yl)])
os.system('clear')
print(x)
- 定时拉取使用的是apscheduler
def start(self):
self.read_fund_code()
scheduler = BlockingScheduler()
scheduler.add_job(self.request_fund_data, 'interval', seconds=3)
scheduler.start()
- 终端输出样例
项目源码
- github:项目源码
- clone即可用
- 祝各位大佬理财收益超越工资(暗示点赞)