今天看了一下数据读取的相关代码,结合实践,作如下总结:
我的代码所在目录如下图:
conf_path = os.path.dirname(os.path.abspath(__file__))
work_path = os.path.dirname(os.path.dirname(conf_path))
data_path = os.path.join(work_path, "data")
采用debug的方法,看每一步的值,如下图:
这样就很容易理解了:
os.path.abspath(file)返回代码文件的所在的目录,不带文件名;
os.path.dirname(path)返回path目录或者绝对路径的上一级目录,结合以上几张图,很容易看出:代码第二行对conf_path执行了两次os.path.dirname,得到的就是上两级的目录;第三行,与data拼接,最终形成数据所在目录。