os.getcwd && os.path.abspath详解

os.getcwd()

1、os.getcwd():
获取当前工作目录,也就是在哪个目录下运行这个程序。

举例来说:

假设F:\aaa\bbb\ccc目录下有个文件 TestDir.py,打印当前工作目录。进入windows命令行窗口:

  在F:\aaa\bbb\ccc运行 python TestDir.py,输出F:\aaa\bbb\ccc

  在F:\aaa\bbb运行 python ccc/TestDir.py,输出F:\aaa\bbb

  在F:\aaa运行 python bbb/ccc/TestDir.py,输出F:\aaa
  

如果使用pycharm的要注意:

pycharm里面默认的工作目录是你项目的工作目录!!!

2、如果我想获取TestDir.py文件所在的目录,怎么办?

使用sys.path[0]

import os
print(os.getcwd())

import sys
print(sys.path[0])

os.path.abspath源码解读

# Return an absolute path.  
try:  
    from nt import _getfullpathname  #nt是提供访问windows操作系统的接口.

except ImportError: # not running on Windows - mock up something sensible  如果导入失败
    def abspath(path):  
        """Return the absolute version of a path."""  
        if not isabs(path):  #如果不是绝对路径
            if isinstance(path, unicode):#判断编码类型是不是unicode
                cwd = os.getcwdu()  #是用getcwdu
            else:  
                cwd = os.getcwd()  #不是用getcwd
            path = join(cwd, path) #把path和当前工作路径连接起来.
        return normpath(path)  

else:  # use native Windows method on Windows
    def abspath(path):
    """Return the absolute version of a path."""

        if path: # Empty path must return current working directory.
            try:
                path = _getfullpathname(path)
            except WindowsError:
                pass # Bad path - return unchanged.
        elif isinstance(path, _unicode):
            path = os.getcwdu()
        else:
            path = os.getcwd()
        return normpath(path)

其实就是什么呢?
os.path.abspath取决于os.getcwd,如果是一个绝对路径,就返回,如果不是绝对路径,根据编码执行getcwd/getcwdu.
然后把path和当前工作路径连接起来.

参考:

https://www.cnblogs.com/nzbbody/archive/2013/11/12/3419473.html

http://blog.csdn.net/yes1cpp/article/details/43310595

你可能感兴趣的:(python)