標籤:
import sysimport osdef pySource(filePath): myFile=os.path.basename(filePath) dir=os.path.dirname(filePath) fileName=os.path.splitext(myFile)[0] if(os.path.exists(dir)): paths=sys.path pathfound=0 for path in paths: if(dir==path): pathfound=1 if not pathfound: sys.path.append(dir) exec(‘import ‘+fileName) in globals() exec(‘reload(‘+fileName+‘)‘) in globals() return fileNamepySource(‘C:/Users/XS/Documents/maya/2012/zh_CN/prefs/scriptEditorTemp/myPY.py‘)
import sysimport osdef pySource(filePath):#去掉檔案目錄路徑,返迴文件名,含檔案尾碼 myFile = os.path.basename(filePath)#去掉檔案名稱,返回目錄路徑 dir = os.path.dirname(filePath)#將檔案名稱和擴充尾碼名分離後取檔案名稱 fileName = os.path.splitext(myFile)[0]#上面步驟中,編輯器僅根據提供的路徑和檔案名稱進行分類,並沒有檢測實際是否存在#檢查路徑是否存在,如果存在則進入下一步 if( os.path.exists( dir ) ):#sys.path是maya啟動後載入python相關模組的地址集合 paths = sys.path pathfound = 0#遍曆paths這個地址集合中的名稱,如果有和提供的檔案路徑相同的地址,除了變數pathfound的值更改為1,不執行其他動作 for path in paths: if(dir == path): pathfound = 1#如果路徑不是地址集合中的地址,則將其加入(這是考慮多次啟動指令碼的情況) if not pathfound: sys.path.append( dir )#以上的語句,將外部的python檔案作為一個模組載入到了當前的進程中,可進行即時調用#注意:這是個動態載入,使用者的外部檔案會在下一次python重啟動時從進程中消失#exec方法用於執行儲存在字串或者檔案中的python語句,類似MEL中的eval函數#不過這裡需要添加in globals(),因為我們要在整個全域變數中執行我們的外部指令碼 exec(‘import ‘ +fileName) in globals()#因為是後匯入的模組,因此需要重載檔案來確保資料的更新 exec( ‘reload( ‘ + fileName + ‘ )‘ ) in globals()#返回輸入檔案的命名空間 return fileName# 輸入一個檔案需要提供完整路徑--勿用中文路徑#注意python中路徑是用斜杠【/】,而不是windows中檔案夾路徑的反斜線【\】#如果是MacOS系統,由於不存在windows的分區概念,路徑通常為:/Users/...pySource( ‘c:/Users /myPY.py‘ )
python 載入外部檔案