绝对和相对路径的区别

一:

相对路径是相对脚本文件来的。

比如脚本在C:/python目录下,相同目录下有一个文件叫test.txt

那么绝对路径就是 C:/python/test.txt,相对路径就是test.txt

import os
path = os.getcwd() #获取当前工作目录,即当前python脚本工作的目录绝对路径
print(path)
输出  '''/Users/Alan/Desktop/AlanProject/day5'''
path_a = os.path.dirname(os.path.abspath(__file__)) 
#获取当前工作目录,即当前python脚本工作的目录绝对路径
print (path_a)
输出  '''/Users/Alan/Desktop/AlanProject/day5'''
print(__file__)
输出  '''绝对和相对路径.py''' #得出绝对路径

二:

两个版本的差异

  1. python2缺省为相对路径导入,python3缺省为绝对路径导入
  2. python2绝对路径导入
    from __future__ import absolute_import
  3. 如果需要保持python2与python3皆可用,避免出现
    try:
     from pets.cat import xxx
    except:
     from cat import xxx
    则需要使用相对路径导入,即
    from .cat import xxx
  4. python2缺省会搜索上一级目录、上上级目录

其他重点

    1. 包之所以为包,取决于是否有__init__.py文件
    2. 相对路径导入仅用于包内,同一个顶级包内
    3. 当前目录:

      play$ python main.py
      play为当前目录

      play$ python test/main.py
      play/test为当前目录

      play$ python -m test.main
      play为当前目录

    4. 出现SystemError: Parent module '' not loaded, cannot perform relative import错误一个原因为包内使用相对路径,改用python -m可解决

原文地址:https://www.cnblogs.com/alan-babyblog/p/5218836.html