在Python中查找当前执行文件的路径
在Python中获取当前执行脚本的路径对于访问文件和执行脚本至关重要执行各种操作。然而,在某些条件下,几种方法可能会失败。本文探讨了在各种场景下检索文件路径的可靠方法。
现有方法的挑战
常用方法,如 os.path.abspath(os. path.dirname(sys.argv[0])) 和 os.path.abspath(os.path.dirname(__file__)) 有限制。从另一个 Python 脚本运行时,sys.argv[0] 可能无法提供正确的路径,而 __file__ 在 py2exe 脚本、IDLE、Mac OS X 环境和类似实例中可能不可用。
通用解决方案
要解决这些问题,一个可靠的方法是利用inspect和os模块:
<code class="python">from inspect import getsourcefile from os.path import abspath</code>
使用getsourcefile(lambda:0),你可以获得源文件当前执行的 lambda 函数,有效绕过其他方法的限制。然后使用abspath提取路径。
示例场景
考虑以下目录结构:
C:. | a.py \---subdir b.py
a.py 包含:
<code class="python">from inspect import getsourcefile from os.path import abspath print("a.py: File Path =", abspath(getsourcefile(lambda:0))) execfile("subdir/b.py")</code>
b.py 包含:
<code class="python">from inspect import getsourcefile from os.path import abspath print("b.py: File Path =", abspath(getsourcefile(lambda:0)))</code>
运行 a.py 应显示:
a.py: File Path = C:\a.py b.py: File Path = C:\subdir\b.py
This演示了在各种情况下正确获取文件路径的能力。
以上是如何可靠获取当前执行的Python脚本的路径?的详细内容。更多信息请关注PHP中文网其他相关文章!