Python - 获取调用函数的完整文件路径?

5

给定一个模块 mymodule.py; 并且在其中

def foo():
    X = # file path where foo was called from
    print(X)

我应该如何完成评论中描述的操作?例如,如果我在test.py中执行以下操作:
from mymodule import foo
foo()

然后在终端中运行python3 test.py,它应该会打印出test.py的完整文件路径。

2个回答

10
你可以使用 sys.argv[0] 来获取主文件的名称,然后可以使用 os.path.realpath() 来获取其完整路径:
import os
import sys

def foo():
    X = os.path.realpath(sys.argv[0])
    print(X)

演示:

kevin@Arch ~> python test.py 
/home/kevin/test.py

抱歉表述不清,我的意思是将函数从 mymodule 导入到 test.py 中,并且我想要的是 test.py 的文件路径,而不是 mymodule 的。 - 13steinj
@JonathanStein:那是我的错,不过请检查我的编辑 :) - Remi Guan

0
你可以使用 os.path.realpath 来获取当前执行文件的完整路径:
import os

def func():
  full_path = os.path.realpath(__file__)
  print(full_path)

if (__name__ == "__main__"):
  func()

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接