os.getcwd()使用误区

平时用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]))
  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值