1. python中的模組
python中,每個py檔案被稱之為模組,每個具有__init__.py檔案的目錄被稱為包。只要模組或者包所在的目錄在sys.path中,就可以使用import 模組或import 包來使用。上面這段描述最重要的兩個點:
2. 匯入本目錄下的模組(同一目錄)
對於同一目錄下的兩個檔案a.py和b.py。
a.py:
def
a_print
() :
print(" i am a ")
如果要想在b.py中用a模組中的a_print()函式,則一般我們直接寫成:
from a import a_print
....
a_print()
....
事實上,我也一直這麼用。
但是這種用法有乙個問題,需要就是b.py檔案本身run。換句話說,如果有不在同一目錄下的檔案main.py通過匯入b模組來引用a模組中的函式,是不可行的。b.py中必須寫成:
from .a import a_print
加上【.】的意思就是相對路徑匯入。關於這一點,stackoverflow中有個問題下舉例解釋的非常清楚,我就不再搬運了,傳送門
(3. 匯入子目錄下的模組
雖然題目是子目錄,其實說白了就是不同目錄下的其他模組,也就是py檔案。根據前面所述,這條路徑必須是在sys路徑。
因為很簡單,python import就是在sys目錄中查詢模組並匯入。
此處還需注意,如果我們直接這樣寫:
那麼就會出現上述第二條的那種情況,因為對於執行不同的指令碼檔案,相對路徑是不一樣的,也就是說在其他目錄中匯入這個檔案時,子目錄下模組的相對路徑就不是」./」了。
通常如下處理:
current_path = os.path.dirname(__file__)
module_path = os.path.join(current_path, 'subdir')
mod = __import__('modules', globals(), locals())
然後就是正常的匯入了(不用加路徑,直接import 模組名字) python建立子目錄並在子目錄下建立檔案
import os 首先判斷當前工作目錄下是否存在目錄machine learning ifnot os.path.isdir machine learning 不存在的話就建立子目錄machine learning 因為父目錄存在,所有這裡用mkdir也可以 os.makedirs machine...
Python指令碼訪問子目錄
d work my program.py src dir os.path.abspath os.path.dirname file print src dir sub dir os.path.join src dir,sub dir print sub dir 輸出 d work d work su...
python 子目錄的呼叫
主要是論述python中的呼叫父目錄或者子目錄的情況 有如下圖示 如上圖所示在parent dir目錄中有乙個py檔案test.py和兩個資料夾,兩個資料夾中有各自有相關的檔案。case1 呼叫父目錄的檔案 如在a.py檔案中呼叫test.py檔案。需要在在檔案頭部加入如下 import sys i...