2020年7月11日 星期六

自動化程式的檔案路徑規劃

電腦的檔案系統採取樹狀結構規劃,每個檔案都存在一個對應的路徑。從程式設計的角度,必須明確的指定路徑才能正確的存取檔案。AEDT預設有幾個重要的目錄用來存放資料及函式庫(如圖一),包括:
  • Project:存檔的預設目錄,可使用oDesktop.GetProjectDirectory()取得
  • Temp:模擬過程暫存的目錄,可使用oDesktop.GetTempDirectory()取得
  • SysLib:系統層級的腳本存放目錄,可使用oDesktop.GetSysLibDirectory()取得
  • UserLib:使用者層級的腳本存放目錄,可使用oDesktop.GetUserLibDirectory()取得
  • PersonalLib:個人層級的腳本存放目錄,可使用oDesktop.GetPersonalLibDirectory()取得

(圖一) AEDT環境目錄設定

除了上述目錄,程式開發者還必須熟悉下面幾種目錄:

工作目錄:預設為C:\Program Files\AnsysEM\AnsysEM20.2\Win64,當程式執行儲存檔案時,如果只有標示檔名而沒有標示目錄,則檔案會儲存於此目錄底下。查詢工作目錄可以使用下面代碼:

import os
cwd_path = os.path.abspath(os.getcwd())
AddWarningMessage(str(cwd_path))

程式本身存放的目錄:程式執行時有時需要配置檔,而配置檔往往都是跟程式擺放在同一目錄底下。如不指定目錄,Python會嘗試到工作目錄尋找配置檔,一但找不到配置檔則會引發FileNoFoundException錯誤。為了解決這個問題,建議程式開頭便將工作目錄切換與程式本身所在的目錄,參考代碼如下:

import os
abspath = os.path.abspath(__file__)
dname = os.path.dirname(abspath)
os.chdir(dname)
AddWarningMessage(str(dname))

專案的目錄:當程式需要輸出與專案相關的資料,那麼最好是將資料跟專案放在同一目錄底下方便檢閱。如果目錄底下有多個專案,可以在輸出的檔名插入專案的名稱以利辨別。底下代碼可以取得執行腳本時的專案名稱及專案的儲存路徑:

oProject = oDesktop.GetActiveProject()
prj_path = oProject.GetPath()
prj_name = oProject.GetName()
AddWarningMessage(str(prj_path))
AddWarningMessage(str(prj_name))


沒有留言:

張貼留言