首頁  >  文章  >  後端開發  >  如何可靠地確定 Python 中執行檔的路徑?

如何可靠地確定 Python 中執行檔的路徑?

DDD
DDD原創
2024-10-25 09:14:29874瀏覽

How Can You Reliably Determine the Execution File's Path in Python?

確定Python 中執行檔案的路徑

簡介

識別目前執行的Python 腳本的路徑對於各種應用程式至關重要。然而,找到一種適用於不同場景的「通用」方法可能具有挑戰性。本文探討了幾種方法並解決了與之相關的局限性,最終提出了一個全面的解決方案。

傳統方法的限制

  • path = os.path.abspath(os. path.dirname(sys.argv[0])):當:當透過execfile 等方法從不同目錄中的另一個腳本執行腳本時,此方法會失敗。
  • path = os.path.abspath(os.path.dirname(__file__)):此方法在下列情況下可能無法運作:

    • file 屬性不存在(例如,Py2exe 執行)
    • 使用execute()從IDLE 執行程式碼
    • 檔案未定義(例如,Mac OS X v10.6)

綜合解決方案

要取得目前正在執行的檔案的路徑(無論執行上下文如何),可以使用檢查和os 模組中的函數組合:

from inspect import getsourcefile
from os.path import abspath

path = abspath(getsourcefile(lambda:0))

此解決方案提供了在各種場景下檢索來源檔案路徑的一致方法,包括:

  • 直接執行主腳本
  • 從另一個腳本執行
  • 在函數內執行
  • 在解釋器內執行(例如IDLE)

範例測試

考慮以下目錄結構:

C:.
|   a.py
\---subdir
        b.py

a.py 中的程式碼:

#! /usr/bin/env python
import os, sys

print "a.py: os.getcwd()=", os.getcwd()
print

execfile("subdir/b.py")

subdir/b.py 中的程式碼:

#! /usr/bin/env python
import os, sys

print "b.py: os.getcwd()=", os.getcwd()
print

python a.py 的輸出是:

a.py: os.getcwd()= C:\
b.py: os.getcwd()= C:\zzz

這表示os.getcwd() 反映了執行上下文的工作目錄,該目錄可能與正在執行的腳本的位置不同。相較之下,建議的解決方案 (abspath(getsourcefile(lambda:0))) 始終會產生腳本的來源檔案路徑,無論執行上下文為何。

以上是如何可靠地確定 Python 中執行檔的路徑?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn