PYTHON DAY5


软件开发规范
bin:存放可执行文件,start.py
conf:配置文件
log:error.log access.log
lib:包或者文件
db:
core:存放核心逻辑,src.py
Readme
建立目录结构只是为了以后维护程序方便


import sys,os
print(os.path.abspath(__file__)) #os.path.abspath表示文件的绝对路径,__file__表示当前文件的绝对路径,用之前,需要导入os包
print(os.path.dirname(os.path.abspath(__file__))) #os.path.dirname获取当前文件的父目录文件路径
print(os.path.dirname(os.path.dirname(os.path.abspath(__file__)))) #os.path.dirname获取当前文件的父目录文件路径的上层目录,通过此方式不断嵌套,可以不断获取上层目录

start.py 目录写法:
import sys,os
BASE_DIR=os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
sys.path.append(BASE_DIR)

 

#三次打印结果如下
# E:\pythonL\测试目录\配置环境变量.py
# E:\pythonL\测试目录
# E:\pythonL
BASE_DIR=os.path.dirname(os.path.dirname(os.path.abspath(__file__))) #配置当前脚本的环境变量,配置完成后就可以通过from core import src操作了,core为与E:\pythonL\测试目录
#的同层目录
print(BASE_DIR)

if __name__ == '__main__':

import importlib 只会在执行文件中reload,所以此方法并不太靠谱
importlib.reload(spam)
print(spam.money)

模块搜索顺序
内存中--》内置模块----》sys.path

import sys
print(sys.path) #当前文件的执行路径
sys.path.append(r'c:\users\administrator\') #如果在sys.path中未找到相应的文件,可以使用sys.path.append将路径追加到sys.path中,或者用sys.path.insert(0,r'c:\users\administrator\')加到变量的最前面去

__name__ #文件当做脚本运行时__name__等于__main__,#文件当做模块被加载运行时__name__等于模块名,直接写main回车,就会出来 if __name__ == '__main__'
print(__name__)
#if __name__ == '__main__' 文件就会当做脚本去执行

包的导入:
from aaa.m1 import func1
from aaa.m2 import func2
from aaa.bbb.m3 import func3

绝对导入与相对导入都是针对包来说的,对于模块,没有这么一说

posted @ 2017-08-04 10:16  DBKEEPER  阅读(116)  评论(0编辑  收藏  举报