创建一个实用程序函数,用于检索用户执行的脚本的目录

时间:2017-01-03 15:56:08

标签: python

获取当前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文件中的优雅解决方案是什么?

2 个答案:

答案 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