1.1.2-玩转Python3金融API应用-easyutils的文件结构
第一次看github,最让人摸不清头脑的可能是项目文件的结构。easyutils包的文件结构相对比较简单,所以这里可以先给大家介绍一下。
easyutils的github页面:https://github.com/shidenggui/easyutils
easyutils的github页最上层
文件夹:easyutils,tests
文件:.gitignore,README.md,requirements.txt,setup.py
easyutils/easyutils
文件:__init__.py,stock.py,timeutils.py
easyutils/tests
文件:test_timeutils.py
下面咱们来分层讲解。
easyutils的github页最上层
setup.py
用于命令行下安装的文件。
文件中注明了这个模块是用于中国股票的模块,作者名及作者邮箱,GitHub网址,必须安装的模块等内容。其中的keywords便于pypi索引。
应用这个文件可以将easyutils包安装到电脑上。
requirements.txt
这个文档中写的是使用easyutils前必须安装的模块。
必须安装的模块有两个:requests和pyquery。
可以使用以下命令批量安装requirements.txt中要求的包。
pip install -r requirements.txt
.gitignore
这是作者Git工作目录中的一些文件,并没有打算提交到GitHub上来。这些文件对使用包通常没有什么影响。这个文件对使用者而言一般可以略过。
easyutils文件夹
这个文件夹名字和这个包的名字是一致的,由此可以看出这个文件夹内的文件是整个包最核心的部分。这个文件夹内的py文件都是这个包的模块。每个模块都具有不同的功用。
tests文件夹
tests这样名字的文件夹通常内部会放一些用于测试的代码。各位可以手动测试,或者使用pytest或者unittest这类模块进行测试。tests文件夹并不一定会提供example(案例)给你,但是有时候会包含一些函数的使用过程,是值得看看的。
easyutils/easyutils
__init__.py
这里直接引用他人的内容吧(网络的力量真的很大)。
__init__.py 文件的作用是将文件夹变为一个Python模块,Python 中的每个模块的包中,都有__init__.py 文件。
__init__.py 文件可以为空,但是我们还可以为它增加其他的功能。我们在导入一个包时,实际上是导入了它的__init__.py文件。这样我们可以在__init__.py文件中批量导入我们所需要的模块,而不再需要一个一个的导入。具体的实现方法可以自行搜索。
stock.py,timeutils.py
这些就是一个项目包的各个具体模块的源代码了。有些相对较大的项目在包的源代码中还有子包,子包中有子包的模块。有些项目(如easytrader)在源代码文件中还会放一些其他内容,比如config(配置)文件夹,里面装有一些需要使用的网址信息等。
总而言之,一个python项目最主要的部分都在与包名相同的这个文件夹中。
easyutils/tests
test_timeutils.py
放在tests中的文件通常是源代码作者自己用于测试或者方便使用者进行测试的。一个包上到github之后可能会有很多人下载使用,对于金融类API这种可能涉及到资金损盈的包,更是有必要慎重得进行测试。如果想了解测试方法或者相关的python包,那么可以自行搜索类似“python3 unittest”、“python3 pytest”、“python3 单元测试”等内容。对于不太可能会给自己造成损失的项目,使用者可以不用理会测试文件夹的相关内容。
测试文件夹提供的测试可能只是针对某个函数。比如easyutils这里只是针对timeutils中的某个函数进行了测试。如果要测试更多的函数就需要自行操作了。
其他的文件夹或文件
当你打开github上一个规模较大的python项目时,里面会有非常多的文件夹或者文件。比如Doc文件夹,这里面装的是对包的说明文件,一般源代码作者会经由这些文件发出一个使用手册并写入readme文档,供使用者参考。不过对于大多数python初学者而言,他们写的使用参考也是难以理解和直接使用的,到头来还是需要看看源代码。
我在这里不太可能列举出所有的包或者可能出现的文件。如果大家对github感兴趣,网上有不少教程,大家可以前去搜索。我这里只是关注如何应用金融类API,捎带手可能提及一些其他内容。学习嘛,终归还是要自己努力的。
到这一步,咱们已经清楚知道了easyutils包的项目文件结构,通过readme文档初步知道了这个包内函数的用途。然而,如果真的要使用这个包,仅仅知道这些是不够用的。原因在于,readme文档可能写的不全,如果使用函数遇到问题,咱们还是得看源代码。除非一个包的复杂度相当高(比如盈透IB的API)以至于通读全部源代码不太实际,那么,其官方文档通常会较为详细地说明包内各个模块的用途,在实际应用于交易前,一定要通过模拟账户对所有可能用到的类或函数进行充分测试,如果条件允许,更需要在一定小金额的范围内对程序进行实盘交易测试,否则出现bug,带给你的损失是很难估计的。
easyutils包的源文件内容不多,毕竟只是用于提供几个有用的功能,所以咱们可以直接通读源代码。如果你已经迫不及待的打开了easyutils包中模块的源代码,你会发现里面的代码量并不大,所以从上往下读完全没有什么问题。不过,如果你打开某个模块的源代码,里面显示数百行以至成千上万行时,这个时候就不是考虑直接从上往下读了,而是先分析文档的结构,搞清楚各个函数直接的关系,最后再按照一定的顺序去阅读源代码。
那么,下一篇文章,咱们就来讲解easyutils包的第一个模块stock.py的源代码。