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

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

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

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


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


在Python中能夠驗證一下上述的標識方法:測試

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

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

三、 再瞭解一下Python中sys.path的使用.net

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

[
'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(‘你的模塊的名稱’)code

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

 

添加相關的路徑,但在退出python環境後本身添加的路徑就會自動消失! 
代碼中的實現以下:ip

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

四、最後瞭解一下 python 在不一樣層級目錄import 模塊的方法(重點)

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

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

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環境變量的值,找到具體模塊的路徑。這裏僅介紹上面三種簡單狀況。

 

總結:

  經過總結能夠發現,當你要導入的文件在和你的當前文件在同一個目錄時,你直接導入這個文件名就行了。

  當你要導入的文件或者目錄不和你的當前文件同目錄時,你須要跳到這個你要導入文件的父級目錄,而後一級一級的用點號鏈接走過的目錄或者文件,而後就能夠了 至於要怎麼跳到這個這個父級目錄。比較通用的就是,將父級目錄加入系統路徑,而後用點號一級一級的尋找,直到到達你要導入的模

相關文章
相關標籤/搜索