因为原来写的程序小,所以把所有的文件都放在一个目录下面也很容易管理。但是当文件量增加的时候,把所有的文件都放在一个文件夹,反而不好管理。为了便于管理,我们把不同类型的文件放在不同的文件夹里管理。这就是今天要讲的目录开发规范,不仅利于自己管理同时也能让被人一眼就看明白你的代码,这是很有必要的。
定义目录结构目的
可读性高: 不熟悉这个项目的代码的人,一眼就能看懂目录结构,知道程序启动脚本是哪个,测试目录在哪儿,配置文件在哪儿等等。从而非常快速的了解这个项目。
可维护性高: 定义好组织规则后,维护者就能很明确地知道,新增的哪个文件和代码应该放在什么目录之下。这个好处是,随着时间的推移,代码/配置的规模增加,项目结构不会混乱,仍然能够组织良好。
目录组织方式
关于如何组织一个较好的Python工程目录结构,已经有一些得到了共识的目录结构。在Stackoverflow的这个问题上,能看到大家对Python目录结构的讨论。
这里面说的已经很好了,我也不打算重新造轮子列举各种不同的方式,这里面我说一下我的理解和体会。
假设你的项目名为foo, 我比较建议的最方便快捷目录结构这样就足够了:
Foo/
|-- bin/
| |-- foo
|
|-- foo/
| |-- tests/
| | |-- __init__.py
| | |-- test_main.py
| |
| |-- __init__.py
| |-- main.py
|
|-- docs/
| |-- conf.py
| |-- abc.rst
|
|-- setup.py
|-- requirements.txt
不同目录间的模块调用
要使用os和sys模块
如上图,如果你想在bin目录下satff_table文件调用core目录下的main文件。
首先,要知道只能从上一级才能找到下一级中的文件。所以,你要先返回到你要调用的文件的目录的前一级目录即day4。
我们再把找到的路径添加到环境变量中,这样就可以调用了。