問題
Q: 為什麼py檔透過pyinstaller壓成exe檔之後,放到windows工作排程卻找不到路徑?
原因
原因是透過windows的工作排程去執行exe檔的時候,會預設從 C:\WINDOWS\System32 開啟,因為 Windows 工作排程器的程式就是放在 C:\WINDOWS\System32底下。
解決方法
程式碼中加入這個函式,作為獲取當前工作目錄的用途。
1 | import os |
1. os.path.realpath()
獲取path的真實路徑
1 | path = './' |
2. sys.argv[0]
sys.argv 用來表示從 command line 傳入的參數,sys.argv[0] 代表程式的名稱
1 | sys.argv[0] |
若透過工作排程去執行,將會是 C:\WINDOWS\System32,解決問題!
3. os.path.split()
把路徑分割成 dirname 和 basename,返回一個元組
1 | os.path.split(os.path.realpath(path)) |
4. os.path.join()
把目錄和文件合為一個路徑
1 | os.path.join('C:\\Users\\DysonMa\\Desktop','myFile') |
補充
先在cmd內模擬windows工作排程再壓成exe!
不要急著用pyinstaller壓成exe,先開啟cmd,輸入python檔案路徑
這個做法可以模擬程式在windows排程的路徑,提早發現錯誤並加以修正!
1 | python C://xxx.py |