欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python執(zhí)行程序獲取所在目錄的解決方案

 更新時間:2024年05月09日 11:39:06   作者:adyyyyyy  
工作需要,寫一個小腳本,其中有個需求是獲取實際的執(zhí)行程序所在路徑(python代碼由pyinstaller打包成執(zhí)行程序),這篇文章主要介紹了Python執(zhí)行程序獲取所在目錄的解決方案,需要的朋友可以參考下

Python執(zhí)行程序獲取所在目錄

工作需要,寫一個小腳本,其中有個需求是獲取實際的執(zhí)行程序所在路徑(python代碼由pyinstaller打包成執(zhí)行程序)。沒想到這么一個小要求,淺藏小坑。

方案一

os.path.realpath(os.curdir)
os.path.realpath(os.getcwd())

這兩個命令都可以獲取當前命令行的路徑,可是,如果在其它目錄下執(zhí)行程序:

(base) (venv) PS D:\project\pythonProject> .\dist\python.exe

輸出的路徑是命令行當前路徑D:\project\pythonProject而不是執(zhí)行程序所在路徑D:\project\pythonProject\dist。

方案二

os.path.realpath(os.path.dirname(__file__))

這個命令獲取有此行代碼的.py文件位置。直接在pycharm運行調試一切正常。然而,當使用pyinstaller打包程序執(zhí)行后,路徑變成了如下路徑。

C:\Users\Administartor\AppData\Local\Temp\_MEI313522\

一開始還沒找到文件輸出在哪,一番調查后,可能原因如下:

使用 PyInstaller 打包的可執(zhí)行文件在運行時會解壓出臨時文件。這些臨時文件包含了 Python 腳本、依賴庫和資源文件等。當運行打包后的可執(zhí)行文件時,PyInstaller 會將這些文件解壓到一個臨時目錄中,然后從臨時目錄中執(zhí)行程序。

一般情況下,當程序運行結束后,臨時文件會被自動刪除。這是因為操作系統(tǒng)會在程序退出時清理臨時文件。如果程序異常退出,可能會導致臨時文件沒有被刪除。然而,PyInstaller 在打包時會盡量保證生成的可執(zhí)行文件能夠自動清理臨時文件,以避免產(chǎn)生垃圾文件。

在 Windows 系統(tǒng)中,臨時文件通常存儲在用戶的臨時目錄(例如 C:\Users\<username>\AppData\Local\Temp)中。在 Linux 和 macOS 等系統(tǒng)中,通常是在 /tmp 目錄中。

OK,破案,一刻也沒有為__file__的失敗而哀悼,立刻趕來戰(zhàn)場的是sys.argv[0]

方案三

os.path.realpath(os.path.dirname(sys.argv[0]))

完美解決問題。相關資料如下:

sys.argv[0] 表示 Python 腳本或者可執(zhí)行文件的路徑。在運行 Python 腳本時,sys.argv 是一個包含命令行參數(shù)的列表,其中 sys.argv[0] 是腳本本身的路徑。

具體來說,sys.argv[0] 是一個字符串,包含了啟動 Python 解釋器時用于執(zhí)行腳本的可執(zhí)行文件的路徑。它可以用于獲取腳本所在的目錄或用于構建其他路徑。通常情況下,sys.argv[0] 是一個絕對路徑,但在某些情況下也可能是相對路徑。

在使用 pyInstaller 或類似工具將 Python 腳本打包成可執(zhí)行文件時,sys.argv[0] 仍然表示可執(zhí)行文件的路徑,而不是原始 Python 腳本的路徑。

到此這篇關于Python執(zhí)行程序獲取所在目錄的解決方案的文章就介紹到這了,更多相關Python獲取所在目錄內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • Python基本語法之運算符功能與用法詳解

    Python基本語法之運算符功能與用法詳解

    這篇文章主要介紹了Python基本語法之運算符功能與用法,結合實例形式總結分析了Python常見運算符相關使用技巧與操作注意事項,需要的朋友可以參考下
    2019-10-10
  • 利用Python腳本寫端口掃描器socket,python-nmap

    利用Python腳本寫端口掃描器socket,python-nmap

    這篇文章主要介紹了利用Python腳本寫端口掃描器socket,python-nmap,文章圍繞主題展開詳細介紹,具有一定的參考價值,需要的小伙伴可以參考一下
    2022-07-07
  • Python基本socket通信控制操作示例

    Python基本socket通信控制操作示例

    這篇文章主要介紹了Python基本socket通信控制操作,結合實例形式分析了Python socket通信服務器端與客戶端相關操作技巧與注意事項,需要的朋友可以參考下
    2019-01-01
  • 關于Series的index的方法和屬性使用說明

    關于Series的index的方法和屬性使用說明

    這篇文章主要介紹了關于Series的index的方法和屬性使用說明,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-06-06
  • python3對接mysql數(shù)據(jù)庫實例詳解

    python3對接mysql數(shù)據(jù)庫實例詳解

    這篇文章主要介紹了python3對接mysql數(shù)據(jù)庫,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-04-04
  • Python OS模塊常用函數(shù)說明

    Python OS模塊常用函數(shù)說明

    這篇文章主要介紹了Python OS模塊常用函數(shù)說明,本文列出了一些在os模塊中比較有用的部分函數(shù),它們中的大多數(shù)都簡單明了,需要的朋友可以參考下
    2015-05-05
  • pytorch 中transforms的使用詳解

    pytorch 中transforms的使用詳解

    本文主要介紹了pytorch中transforms的使用詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2022-06-06
  • 解決Jupyter-notebook不彈出默認瀏覽器的問題

    解決Jupyter-notebook不彈出默認瀏覽器的問題

    這篇文章主要介紹了解決Jupyter-notebook不彈出默認瀏覽器的問題,本文通過圖文并茂的形式給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-03-03
  • Python新版極驗驗證碼識別驗證碼教程詳解

    Python新版極驗驗證碼識別驗證碼教程詳解

    這篇文章主要介紹了Python新版極驗驗證碼識別驗證碼,極驗驗證是一種在計算機領域用于區(qū)分自然人和機器人的,通過簡單集成的方式,為開發(fā)者提供安全、便捷的云端驗證服務
    2023-02-02
  • Numpy 改變數(shù)組維度的幾種方法小結

    Numpy 改變數(shù)組維度的幾種方法小結

    今天小編就為大家分享一篇Numpy 改變數(shù)組維度的幾種方法小結,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-08-08

最新評論