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

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

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

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

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

方案一

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

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

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

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

方案二

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

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

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

一開(kāi)始還沒(méi)找到文件輸出在哪,一番調(diào)查后,可能原因如下:

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

一般情況下,當(dāng)程序運(yùn)行結(jié)束后,臨時(shí)文件會(huì)被自動(dòng)刪除。這是因?yàn)椴僮飨到y(tǒng)會(huì)在程序退出時(shí)清理臨時(shí)文件。如果程序異常退出,可能會(huì)導(dǎo)致臨時(shí)文件沒(méi)有被刪除。然而,PyInstaller 在打包時(shí)會(huì)盡量保證生成的可執(zhí)行文件能夠自動(dòng)清理臨時(shí)文件,以避免產(chǎn)生垃圾文件。

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

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

方案三

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

完美解決問(wèn)題。相關(guān)資料如下:

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

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

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

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

相關(guān)文章

  • Python基本語(yǔ)法之運(yùn)算符功能與用法詳解

    Python基本語(yǔ)法之運(yùn)算符功能與用法詳解

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

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

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

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

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

    關(guān)于Series的index的方法和屬性使用說(shuō)明

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

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

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

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

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

    pytorch 中transforms的使用詳解

    本文主要介紹了pytorch中transforms的使用詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2022-06-06
  • 解決Jupyter-notebook不彈出默認(rèn)瀏覽器的問(wèn)題

    解決Jupyter-notebook不彈出默認(rèn)瀏覽器的問(wèn)題

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

    Python新版極驗(yàn)驗(yàn)證碼識(shí)別驗(yàn)證碼教程詳解

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

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

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

最新評(píng)論