平时用PyCharm做Python开发的时候,经常会使用到os.getcwd()方法来获取当前的工作路径。
比如,希望将log文件存放到工作目录的logs文件夹中时,就会用到这个方法。
下面我们用不同的方法测试下列一行代码:
import os
if __name__ == '__main__':
print(os.getcwd())
先给出在PyCharm中的运行结果:

但更多时候,代码写完成,不会从PyCharm开始运行,比如会从CMD运行。
在CMD中运行的结果如下:
C:\Users\xxxxx> python "C:/Users/xxxxx/Downloads/Test/main.py"
C:\Users\xxxxx
CMD和PyCharm中运行的结果完全不同!
原因:
os.getcwd()获取的是当前工作目录。
cmd和pycharm的工作目录不同,所打印的结果也不同。
如果想准确获得文件所保存目录的路径,可以用下面的方法:
import os
os.path.dirname(__file__)
如此可以获得答案。
__file__是已加载模块或脚本的完整文件名,因此使用os.path.dirname(__file __)获取它的父目录将获得脚本所在的目录。
os.getcwd()获取当前工作目录。如果从脚本所在的目录(这是常见的)启动脚本,那么工作目录将与os.path.dirname(__file __)调用的结果相同。
注意:
如果使用pyinstaller等工具打包代码,由于__file__必须是实际存在的.py文件,所以会出错!
请使用下面的代码:
import sys
import os
path = os.path.dirname(os.path.realpath(sys.argv[0]))
本文介绍了在Python开发中,os.getcwd()方法获取当前工作目录与__file__获取脚本路径的区别。在PyCharm和CMD中运行os.getcwd()会得到不同结果,因为它们的工作目录不同。为了获取脚本所在目录,可以使用os.path.dirname(__file__)。然而,当使用pyinstaller打包时,__file__可能指向打包后的文件,此时推荐使用os.path.dirname(os.path.realpath(sys.argv[0]))来获取准确路径。
302

被折叠的 条评论
为什么被折叠?



