為什麼從 LabVIEW 呼叫 Python 時,相對路徑會發生變化?

更新 Jun 15, 2023

產品資訊

軟體

  • LabVIEW

程式語言

  • Python

問題敘述

我用 LabVIEW Python 節點呼叫 Python 腳本,在 Python 腳本中使用os.path.abspath(<relative path>)產生相對於 Python 腳本所在位置的檔案路徑
當我從 Windows 命令提示字元呼叫此 Python 腳本時,產生的檔案路徑似乎沒問題。
但是當從 LabVIEW 呼叫時,回傳的路徑卻是相對於C:\Windows\System32

請問為什麼會發生這種情況,為什麼會有這個差異?

解決方案

Python 中的os.path.abspath(<relative path>)函式將相對路徑解釋為相對於當前工作目錄 (CWD - Current Working Directory) 的位置。

從 Windows 命令提示字元呼叫 Python 腳本時,CWD 通常與 Python 腳本檔案的位置相同。因此相對於 CWD 定義產生的檔案路徑會等同相對於 Python 腳本檔案路徑。

當使用 LabVIEW 呼叫 Python 腳本時,CWD 預設是 LabVIEW 首次啟動的位置。也就是如果您從Windwos的 開始 打開 LabVIEW,CWD 將是C:\Windows\System32 如觀察到的那樣。

有兩種方式可以解決這個問題:
  • 編輯 Python 腳本以在定義相對路徑時引用腳本檔案位置而不是 CWD。
  • 從 LabVIEW 以程式化方式更改 CWD。
有一個範例 VI 可從 LabVIEW 取得或設置 CWD 的子 VI。因此如果在呼叫 Python 腳本之前設置 CWD,則可以決定相對路徑應該相對於哪個目錄。

範例 VI 可在此處下載: Get/Set Current Directory in LabVIEW