Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/340.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 创建检索用户执行脚本的实用程序函数';s方向_Python - Fatal编程技术网

Python 创建检索用户执行脚本的实用程序函数';s方向

Python 创建检索用户执行脚本的实用程序函数';s方向,python,Python,获取当前Python脚本目录有多个线程,例如: import os dir = os.path.dirname(os.path.abspath(__file__)) 问题是,如果我希望将此函数添加到某个实用程序文件中,而我希望返回的值是调用文件的目录,在这种情况下,是用户执行的文件,我应该怎么做 这里会发生什么 //utils.py def get_script_dir(): import os return os.path.dirname(os.path.abspath(__

获取当前Python脚本目录有多个线程,例如:

import os
dir = os.path.dirname(os.path.abspath(__file__))
问题是,如果我希望将此函数添加到某个实用程序文件中,而我希望返回的值是调用文件的目录,在这种情况下,是用户执行的文件,我应该怎么做

这里会发生什么

//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())
//用户外壳

python c:\path\to\somewhere\main_app.py

它会打印
main_app.py
目录还是
utils.py
目录?在获取用户实际执行的文件目录时,将函数放置在
utils
文件中的优雅解决方案是什么

# 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())

假设您的项目目录树如下所示:

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))
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

import os
get_script_dir = lambda file: os.path.dirname(os.path.abspath(file))
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

get_script_dir()是否返回?为什么不将
\uuu file__
作为参数传递给
get_script_dir
?为什么不只是尝试几个场景?您应该尝试一下您在问题中编写的代码,看看自己会打印出哪个目录。答案是实用程序文件的目录将被打印,因为从该文件中查找
\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu?您的代码似乎显示的是
\uuuuu main\uuuu
的文件名,而不是其目录。