gpt4 book ai didi

python - 如何在 Python 中获取当前执行文件的路径?

转载 作者:IT老高 更新时间:2023-10-28 12:22:03 27 4
gpt4 key购买 nike

这似乎是一个新手问题,但事实并非如此。一些常见的方法并不适用于所有情况:

sys.argv[0]

这意味着使用 path = os.path.abspath(os.path.dirname(sys.argv[0])),但是如果您从另一个 Python 脚本运行另一个目录,这可能发生在现实生活中。

__file__

这里的意思是使用path = os.path.abspath(os.path.dirname(__file__)),但是我发现这样不行:

  • py2exe 没有 __file__ 属性,但是有 a workaround
  • 当您从 IDLE 运行时execute() 没有 __file__ 属性
  • Mac OS X v10.6 (Snow Leopard) 我得到 NameError: global name '__file__' is not defined

答案不完整的相关问题:

我正在寻找一种通用解决方案,它适用于上述所有用例。

更新

这是一个测试用例的结果:

python a.py 的输出(在 Windows 上)

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

b.py: sys.argv[0]= a.py
b.py: __file__= a.py
b.py: os.getcwd()= C:\zzz

a.py

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

print "a.py: sys.argv[0]=", sys.argv[0]
print "a.py: __file__=", __file__
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: sys.argv[0]=", sys.argv[0]
print "b.py: __file__=", __file__
print "b.py: os.getcwd()=", os.getcwd()
print

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

最佳答案

首先需要从inspectos

导入
from inspect import getsourcefile
from os.path import abspath

接下来,无论您想从哪里找到源文件,只需使用

abspath(getsourcefile(lambda:0))

关于python - 如何在 Python 中获取当前执行文件的路径?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2632199/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com