第一次看github级零,最讓人摸不清頭腦的可能是項(xiàng)目文件的結(jié)構(gòu)。easyutils包的文件結(jié)構(gòu)相對(duì)比較簡單芝雪,所以這里可以先給大家介紹一下覆醇。
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
用于命令行下安裝的文件鹊杖。
文件中注明了這個(gè)模塊是用于中國股票的模塊,作者名及作者郵箱扛芽,GitHub網(wǎng)址骂蓖,必須安裝的模塊等內(nèi)容。其中的keywords便于pypi索引川尖。
應(yīng)用這個(gè)文件可以將easyutils包安裝到電腦上登下。
requirements.txt
這個(gè)文檔中寫的是使用easyutils前必須安裝的模塊。
必須安裝的模塊有兩個(gè):requests和pyquery叮喳。
可以使用以下命令批量安裝requirements.txt中要求的包被芳。
pip install -r requirements.txt
.gitignore
這是作者Git工作目錄中的一些文件,并沒有打算提交到GitHub上來馍悟。這些文件對(duì)使用包通常沒有什么影響畔濒。這個(gè)文件對(duì)使用者而言一般可以略過。
easyutils文件夾
這個(gè)文件夾名字和這個(gè)包的名字是一致的赋朦,由此可以看出這個(gè)文件夾內(nèi)的文件是整個(gè)包最核心的部分篓冲。這個(gè)文件夾內(nèi)的py文件都是這個(gè)包的模塊。每個(gè)模塊都具有不同的功用宠哄。
tests文件夾
tests這樣名字的文件夾通常內(nèi)部會(huì)放一些用于測(cè)試的代碼壹将。各位可以手動(dòng)測(cè)試,或者使用pytest或者unittest這類模塊進(jìn)行測(cè)試毛嫉。tests文件夾并不一定會(huì)提供example(案例)給你诽俯,但是有時(shí)候會(huì)包含一些函數(shù)的使用過程,是值得看看的承粤。
easyutils/easyutils
__init__.py
這里直接引用他人的內(nèi)容吧(網(wǎng)絡(luò)的力量真的很大)暴区。
__init__.py 文件的作用是將文件夾變?yōu)橐粋€(gè)Python模塊,Python 中的每個(gè)模塊的包中辛臊,都有__init__.py 文件仙粱。
__init__.py 文件可以為空,但是我們還可以為它增加其他的功能彻舰。我們?cè)趯?dǎo)入一個(gè)包時(shí)伐割,實(shí)際上是導(dǎo)入了它的__init__.py文件。這樣我們可以在__init__.py文件中批量導(dǎo)入我們所需要的模塊刃唤,而不再需要一個(gè)一個(gè)的導(dǎo)入隔心。具體的實(shí)現(xiàn)方法可以自行搜索。
stock.py尚胞,timeutils.py
這些就是一個(gè)項(xiàng)目包的各個(gè)具體模塊的源代碼了硬霍。有些相對(duì)較大的項(xiàng)目在包的源代碼中還有子包,子包中有子包的模塊笼裳。有些項(xiàng)目(如easytrader)在源代碼文件中還會(huì)放一些其他內(nèi)容唯卖,比如config(配置)文件夾,里面裝有一些需要使用的網(wǎng)址信息等侍咱。
總而言之耐床,一個(gè)python項(xiàng)目最主要的部分都在與包名相同的這個(gè)文件夾中。
easyutils/tests
test_timeutils.py
放在tests中的文件通常是源代碼作者自己用于測(cè)試或者方便使用者進(jìn)行測(cè)試的楔脯。一個(gè)包上到github之后可能會(huì)有很多人下載使用撩轰,對(duì)于金融類API這種可能涉及到資金損盈的包,更是有必要慎重得進(jìn)行測(cè)試昧廷。如果想了解測(cè)試方法或者相關(guān)的python包堪嫂,那么可以自行搜索類似“python3 unittest”、“python3 pytest”木柬、“python3 單元測(cè)試”等內(nèi)容皆串。對(duì)于不太可能會(huì)給自己造成損失的項(xiàng)目,使用者可以不用理會(huì)測(cè)試文件夾的相關(guān)內(nèi)容眉枕。
測(cè)試文件夾提供的測(cè)試可能只是針對(duì)某個(gè)函數(shù)恶复。比如easyutils這里只是針對(duì)timeutils中的某個(gè)函數(shù)進(jìn)行了測(cè)試怜森。如果要測(cè)試更多的函數(shù)就需要自行操作了。
其他的文件夾或文件
當(dāng)你打開github上一個(gè)規(guī)模較大的python項(xiàng)目時(shí)谤牡,里面會(huì)有非常多的文件夾或者文件副硅。比如Doc文件夾,這里面裝的是對(duì)包的說明文件翅萤,一般源代碼作者會(huì)經(jīng)由這些文件發(fā)出一個(gè)使用手冊(cè)并寫入readme文檔恐疲,供使用者參考。不過對(duì)于大多數(shù)python初學(xué)者而言套么,他們寫的使用參考也是難以理解和直接使用的培己,到頭來還是需要看看源代碼。
我在這里不太可能列舉出所有的包或者可能出現(xiàn)的文件胚泌。如果大家對(duì)github感興趣省咨,網(wǎng)上有不少教程,大家可以前去搜索玷室。我這里只是關(guān)注如何應(yīng)用金融類API茸炒,捎帶手可能提及一些其他內(nèi)容。學(xué)習(xí)嘛阵苇,終歸還是要自己努力的壁公。
到這一步,咱們已經(jīng)清楚知道了easyutils包的項(xiàng)目文件結(jié)構(gòu)绅项,通過readme文檔初步知道了這個(gè)包內(nèi)函數(shù)的用途紊册。然而,如果真的要使用這個(gè)包快耿,僅僅知道這些是不夠用的囊陡。原因在于,readme文檔可能寫的不全掀亥,如果使用函數(shù)遇到問題撞反,咱們還是得看源代碼。除非一個(gè)包的復(fù)雜度相當(dāng)高(比如盈透IB的API)以至于通讀全部源代碼不太實(shí)際搪花,那么遏片,其官方文檔通常會(huì)較為詳細(xì)地說明包內(nèi)各個(gè)模塊的用途,在實(shí)際應(yīng)用于交易前撮竿,一定要通過模擬賬戶對(duì)所有可能用到的類或函數(shù)進(jìn)行充分測(cè)試吮便,如果條件允許,更需要在一定小金額的范圍內(nèi)對(duì)程序進(jìn)行實(shí)盤交易測(cè)試幢踏,否則出現(xiàn)bug髓需,帶給你的損失是很難估計(jì)的。
easyutils包的源文件內(nèi)容不多房蝉,畢竟只是用于提供幾個(gè)有用的功能僚匆,所以咱們可以直接通讀源代碼微渠。如果你已經(jīng)迫不及待的打開了easyutils包中模塊的源代碼,你會(huì)發(fā)現(xiàn)里面的代碼量并不大咧擂,所以從上往下讀完全沒有什么問題敛助。不過,如果你打開某個(gè)模塊的源代碼屋确,里面顯示數(shù)百行以至成千上萬行時(shí),這個(gè)時(shí)候就不是考慮直接從上往下讀了续扔,而是先分析文檔的結(jié)構(gòu)攻臀,搞清楚各個(gè)函數(shù)直接的關(guān)系,最后再按照一定的順序去閱讀源代碼纱昧。
那么刨啸,下一篇文章,咱們就來講解easyutils包的第一個(gè)模塊stock.py的源代碼识脆。