os.getcwd(),调试和命令行运行的时候工作目录不一致

874 阅读1分钟

os.getcwd()讲解

工作目录如下:

getcwd 获取的是执行文件时候的路径,

如果我们在工程目录下执行,那么就是获取工程目录

比如我们在命令行中运行 python ./Run/run_case_ddt.py

getcwd获取到的目录就是/Users/roman/Documents/GitHub/mooc/

如果我们直接在run_case_ddt.py进行调试,getcwd获取到的目录就是/Users/roman/Documents/GitHub/mooc/Run/

这样两个执行获取出来的是不一样的。我们更多的时候是采用第一种。因为项目中 也会这么去做。

那么调试和命令行运行的时候工作目录不一致,应该怎么解决呢?

怎么样才能在调试脚本的时候,获取到工程目录呢?有两种办法

  • 第一种:os.path.abspath(os.path.join(os.getcwd(), "../"))
  • 第二种:os.path.dirname(os.path.dirname(os.path.abspath(file)))

最后附上网上查到的获取目录的一些方法

import os

print '***获取当前目录***'
print os.getcwd()
print os.path.abspath(os.path.dirname(__file__))

print '***获取上级目录***'
print os.path.abspath(os.path.dirname(os.path.dirname(__file__)))
print os.path.abspath(os.path.dirname(os.getcwd()))
print os.path.abspath(os.path.join(os.getcwd(), ".."))

print '***获取上上级目录***'
print os.path.abspath(os.path.join(os.getcwd(), "../.."))