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

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

这似乎是个新手的问题,但事实并非如此。有些常见的方法并非在所有情况下都有效:

sys.argv[0]

这意味着使用path = os.path.abspath(os.path.dirname(sys.argv[0])),但如果您从另一个目录中的另一个Python脚本运行,则此操作不起作用,而且在现实生活中可能会发生这种情况。

_文件

这意味着使用path = os.path.abspath(os.path.dirname(__file__))但我发现这不管用

  • py2exe

    没有

    __file__

    属性,但是有一个

    变通

  • 当您从空闲的

    execute()

    没有

    __file__

    属性
  • OSX10.6

    NameError: global name '__file__' is not defined

答案不全的相关问题:

我在找一个通用解,在上述所有用例中都能工作。

更新

下面是一个测试案例的结果:

pythona.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

阿比

#! /usr/bin/env pythonimport os, sysprint "a.py: sys.argv[0]=", sys.argv[0]print "a.py: __file__=", __file__print "a.py: os.getcwd()=", 
os.getcwd()printexecfile("subdir/b.py")

subdir/b.py

#! /usr/bin/env pythonimport os, sysprint "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


侃侃尔雅
浏览 1016回答 3
3回答

慕标琳琳

首先,您需要从inspect和osfrom inspect import getsourcefilefrom os.path import abspath接下来,无论您想从哪里找到源文件,只需使用abspath(getsourcefile(lambda:0))
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python