平时用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]))
|