获取当前Python的脚本目录有多个主题,例如:
import os
dir = os.path.dirname(os.path.abspath(__file__))
问题是,如果我想将此函数添加到某个实用程序文件中,我该怎么办?我希望返回的值是调用文件的目录,在这种情况下,是用户执行的文件? / p>
这会发生什么?
// utils.py
def get_script_dir():
import os
return os.path.dirname(os.path.abspath(__file__))
// main_app.py
from utils import get_script_dir
print(get_script_dir())
//用户的shell
python c:\path\to\somewhere\main_app.py
是否会打印main_app.py
目录或utils.py
目录?在获取用户实际执行的文件目录时,将函数放在utils
文件中的优雅解决方案是什么?
答案 0 :(得分:1)
请尝试关注并告诉我它是否正是您想要的:
# utils.py
def get_script_dir():
import sys
import os
return os.path.dirname(sys.modules['__main__'].__file__)
# main_app.py
from utils import get_script_dir
print(get_script_dir())
答案 1 :(得分:0)
假设您的项目目录树如下所示:
Python/
main.py
modules/
utils.py
__init__.py
成为Python/modules/utils.py
:
import os
get_script_dir = lambda file: os.path.dirname(os.path.abspath(file))
和Python/main.py
:
from modules import utils
import os
script_dir = utils.get_script_dir(__file__)
print("[i] Currently executing file {} located at {}".format(os.path.basename(__file__), script_dir))
执行Python/main.py
将输出如下内容:
[i] Currently executing file main.py located at C:\Users\BlackVirusScript\Desktop\Python