在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__))
再次用以上方法可以得到上上级目录等等