在Python中以絕對路徑或者相對路徑導入文件(或模塊)的方法


在Python中以相對路徑或者絕對路徑來導入文件或者模塊的方法

相對路徑和絕對路徑的概念

絕對路徑就是文件的真正存在的路徑,是指從硬盤的根目錄(盤符)開始,進行一級級目錄指向文件。 
相對路徑就是以當前文件為基准進行一級級目錄指向被引用的資源文件。 


以下是常用的表示當前目錄和當前目錄的父級目錄的標識符 
   
../ 表示當前文件所在的目錄的上一級目錄 
./ 表示當前文件所在的目錄(可以省略) 
/ 表示當前站點的根目錄(域名映射的硬盤目錄) 


在Python中可以驗證一下上述的標識方法:

測試的目錄結構:
目錄的結構信息

import os path1=os.path.abspath('.') # 表示當前所處的文件夾的絕對路徑 print(path1) path2=os.path.abspath('..') # 表示當前所處的文件夾上一級文件夾的絕對路徑 print(path2)
# D:/PycharmProjects/mnistCheck/AbsolutepathAndrelativepath.py
D:\PycharmProjects\mnistCheck
D:\PycharmProjects

3、 再了解一下Python中sys.path的使用

sys.path是python的搜索模塊的路徑集,是一個list,如下:

[
'D:\\PycharmProjects\\mnistCheck', 'D:\\PycharmProjects\\mnistCheck', 'D:\\PycharmProjects\\KerasDataSettry', 'C:\\ProgramData\\Anaconda3\\envs\\tensorflow\\python35.zip', 'C:\\ProgramData\\Anaconda3\\envs\\tensorflow\\DLLs', 'C:\\ProgramData\\Anaconda3\\envs\\tensorflow\\lib', 'C:\\ProgramData\\Anaconda3\\envs\\tensorflow', 'C:\\ProgramData\\Anaconda3\\envs\\tensorflow\\lib\\site-packages', 'C:\\ProgramData\\Anaconda3\\envs\\tensorflow\\lib\\site-packages\\Sphinx-1.6.3-py3.5.egg' ]

可以在python 環境下使用:


sys.path.append(‘你的模塊的名稱’)

sys.path.insert(0,’模塊的名稱’)

 

添加相關的路徑,但在退出python環境后自己添加的路徑就會自動消失! 
代碼中的實現如下:

import sys sys.path.append('C:\Users\Administrator\Desktop\ExperimentAss\gcForest-master')

4、最后了解一下 python 在不同層級目錄import 模塊的方法(重點)

有一個文件夾/home/a, 里面有個模塊叫b.py, 我怎么把他import到程序里?

方法一:    (屬於剛開始分析的代碼里第一種情況)

import sys; 
sys.path.append(“/home/a/”) 
import b

方法二:

在目錄里面增加__init__.py文件,里面可以寫import時執行的代碼,當然也可以留空就可以. 
import home.a.b

方法三:

from home.a.b import * 
前提 home、a中都包括__init__.py 即:要導入的文件的當前目錄和父目錄都要有init.py文件


 Python包含子目錄中的模塊方法比較簡單,關鍵是能夠在sys.path里面找到通向模塊文件的路徑。 

下面將具體介紹幾種常用情況:

(1)主程序與模塊程序在同一目錄下:

如下面程序結構: 
– src 
  |– mod1.py 
  |– test1.py

  若在程序test1.py中導入模塊mod1, 則直接使用import mod1

(2)主程序所在目錄是模塊所在目錄的父(或祖輩)目錄 
如下面程序結構: 
– src 
|– mod1.py 
|– mod2 
  | – mod2.py 
– test1.py

  若在程序test1.py中導入模塊mod2, 需要在mod2文件夾中建立空文件__init__.py文件,然后使用 import mod2.mod2.

(3)主程序導入上層目錄中模塊或其他目錄(平級)下的模塊 
如下面程序結構: 
– src 
  |– mod1.py 
  |– mod2 
   |– mod2.py 
  |– sub 
    | – test2.py 
  – test1.py 
  若在程序test2.py中導入模塊mod1.py和mod2.py。首先需要在mod2下建立__init__.py文件(同(2)),src下不必建立該文件。然后調用方式如下: 
  下面程序執行方式均在程序文件所在目錄下執行,如test2.py是在cd sub;之后執行python test2.py 
而test1.py是在cd src;之后執行python test1.py; 不保證在src目錄下執行python sub/test2.py成功。 

import sys  sys.path.append(“..”)  import mod1  import mod2.mod2

(4)從(3)可以看出,導入模塊關鍵是能夠根據sys.path環境變量的值,找到具體模塊的路徑。這里僅介紹上面三種簡單情況。

 

總結:

  通過總結可以發現,當你要導入的文件在和你的當前文件在同一個目錄時,你直接導入這個文件名就好了。

  當你要導入的文件或者目錄不和你的當前文件同目錄時,你需要跳到這個你要導入文件的父級目錄,然后一級一級的用點號連接走過的目錄或者文件,然后就可以了 至於要怎么跳到這個這個父級目錄。比較通用的就是,將父級目錄加入系統路徑,然后用點號一級一級的尋找,直到到達你要導入的模


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM