sys.path&os.path

less than 1 minute read

Published:

introduction

sys模块包含了与python解释器和它的环境有关的函数, 里面有个 sys.path属性。它是一个list.默然情况下python导入文件或者模块的话,他会先在sys.path里找模块的路径。如果没有的话,程序就会报错。

  1. 查看目前环境变量

     import sys
     print("\n".join(sys.path))
    

    path[0]是当前目录

  2. 加入环境变量

    若一个模块需要import平级的不同目录的模块,或者上级目录里面的模块,就可以通过修改path来实现

    previous_llm_yyq\test_data\gene_test_data.py previous_llm_yyq\test_react.py

     parent_path = os.path.dirname(sys.path[0])
     if parent_path not in sys.path: #避免重复加入
         sys.path.append(parent_path)
     import test_react 
    

    __file__表示显示文件当前的位置

    • 如果执行命令时使用绝对路径,__file__就是脚本的绝对路径。

    • 如果使用的是相对路径,__file__就是脚本的相对路径。

      1. 第三方库(比如pymysql) 如果 pymysql 安装在 ‘/path/to/pymysql’ 目录下,你可以使用以上代码将它添加到 sys.path 中
    1. __init__.py 当python检测到一个目录下存在__init__.py文件时,python就会把它当成一个模块(module)。 当我们从一个package里面调用东西的时候,该__init__.py文件内的代码会被首先执行。
      • IError/
      • myPackage/
        • __init__.py
        • myNewPackage.py
      • main.py 如果直接 from .myPackage.myNewPackage import createSingleDict 会报错显示

        ImportError: attempted relative import with no known parent package solution:https://www.delftstack.com/howto/python/importerror-attempted-relative-import-with-no-known-parent-package/

        os.path

os.path.abspath(path) 返回绝对路径 os.path.basename(path) 返回文件名 os.path.commonprefix(list) 返回list(多个路径)中,所有path共有的最长的路径 os.path.dirname(path) 返回文件路径 os.path.exists(path) 如果路径 path 存在,返回 True;如果路径 path 不存在或损坏,返回 False。 os.path.join(path1[, path2[, …]]) 把目录和文件名合成一个路径 os.path.split(path) 把路径分割成 dirname 和 basename,返回一个元组

os.getcwd() 获取当前工作目录 . 代表自己所在的这个文件夹 .. 代表自己所在的文件夹再往上的文件夹

  • k
    • a
      • b文件
    • c
      • d文件

对于b文件来说,读取.代表a文件夹本身,..代表k文件夹本身

  • 绝对路径 windows :
    linux,MacOS : / 在windows中\易出现转义问题,分隔符替换为/,\\也能识别