gpt4 book ai didi

python - 在Python中获取调用者的相对路径

转载 作者:行者123 更新时间:2023-11-28 17:38:21 26 4
gpt4 key购买 nike

我有这个功能:

def relative_path(*paths):
return os.path.join(os.path.dirname(__file__), *paths)

我如何更改它以返回相对于调用方的路径?

例如,如果我从另一个脚本调用 relative_path('index.html'),是否可以从隐式调用脚本的位置获取相对于脚本的路径,或者我是否需要修改relative_path 也像这样传递 __file__ 吗?

def relative_path(__file__, *paths):
return os.path.join(os.path.dirname(__file__), *paths)

最佳答案

调整 Get __name__ of calling function's module in Python 中的解决方案

文件1.py

import os
import inspect

def relative_path(*paths):
return os.path.join(os.path.dirname(__file__), *paths)

def relative_to_caller(*paths):
frm = inspect.stack()[1]
mod = inspect.getmodule(frm[0])
return os.path.join(os.path.dirname(mod.__file__), *paths)

if __name__ == '__main__':
print(relative_path('index.html'))

子/子文件.py

import sys
sys.path.append(r'/Users/xx/PythonScripts/!scratch')

import file1

if __name__ == '__main__':
print(file1.relative_path('index.html'))
print(file1.relative_to_caller('index.html'))

运行 sub_file.py 得到以下输出:

/Users/xx/PythonScripts/!scratch/index.html
/Users/xx/PythonScripts/!scratch/sub/index.html

上面链接中对问题的评论中有一些注意事项......

关于python - 在Python中获取调用者的相对路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28021472/

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