python得到代码所在文件的绝对路径

在python中获取当前路径使用os.getcwd()并不总是有效的,不是得到的真实绝对路径。运行的时候有时取得的路径是当前脚本路径,有时却不是,相同的代码,在win的pycharm下运行得到的路径,与在linux中执行python test.py后得到的路径是不同的。

查阅了一些资料才发现,os.getcwd()是用来获取调用python程序时所在目录,也就是调用目录,并非该脚本所在目录,举个例子:
有这样一个脚本,e:\root\subdir\test.py,且test.py文件中有print os.getcwd()语句,
进入cmd窗口,cd e:\root\subdir\,敲击python test.py 文件,打印结果是e:\root\subdir
如果是这样 cd e:\root\,敲击python test.py 文件,打印结果却是e:\root
简而言之也就是你在哪个窗口执行的命令,当前窗口就是哪儿。
即使在win的pycharm下,两个模块在相同的目录下也会显示不同的路径

 

 

因为连个模块中的代码不同,导致输出的路径,一个是mainpro , 一个是mypkg.

 

解决办法:

 

获取代码所在文件的绝对路径:

 

 

current_path = os.path.abspath(__file__)

 

获取以上文件所在的目录

current_dir = os.path.dirname(os.path.abspath(__file__))

再次用以上方法可以得到上上级目录等等

 

参考https://blog.csdn.net/cckavin/article/details/85392392

https://blog.csdn.net/qq_33716688/article/details/89333856

https://blog.csdn.net/lzl001/article/details/8495823

posted @ 2019-12-30 17:15  cknds  阅读(5108)  评论(0编辑  收藏  举报