Python 包:我可以从调用它的项目目录中查找 config/yml 文件吗?
Python package: Can I look for config/yml file from project directory which called it?
我正在编写一个 Python 包,其中包含我们团队特有的大量实用类型函数,以便他们可以安装、导入和使用它们。其中一些功能访问需要身份验证的服务,因此在 READ Me 文件中,我指示他们在其项目目录中创建一个 YAML 文件,其中包含他们的凭据。
当他们导入这个包并从中调用函数时,包是否有办法在调用它的目录中查找这个 YAML 文件?还是他们需要自己解析文件并将凭据作为参数传递给函数本身?
__file__
变量包含 Python 程序的名称或路径。我们可以使用 os.path
子模块中的函数来使用它来获取文件(在我下面的示例中称为 password.yml
)。
import os.path
prog = __file__
directory = os.path.dirname(os.path.abspath(prog))
print(os.path.join(directory, 'password.yml'))
abspath
将名称转换为绝对文件(从文件系统根目录开始)。 dirname
删除最后一个(文件名)组件,留下目录,join
使用适合您平台的分隔符将目录路径和文件名放在一起('/'
对于大多数操作系统,'\'
Windows).
我正在编写一个 Python 包,其中包含我们团队特有的大量实用类型函数,以便他们可以安装、导入和使用它们。其中一些功能访问需要身份验证的服务,因此在 READ Me 文件中,我指示他们在其项目目录中创建一个 YAML 文件,其中包含他们的凭据。
当他们导入这个包并从中调用函数时,包是否有办法在调用它的目录中查找这个 YAML 文件?还是他们需要自己解析文件并将凭据作为参数传递给函数本身?
__file__
变量包含 Python 程序的名称或路径。我们可以使用 os.path
子模块中的函数来使用它来获取文件(在我下面的示例中称为 password.yml
)。
import os.path
prog = __file__
directory = os.path.dirname(os.path.abspath(prog))
print(os.path.join(directory, 'password.yml'))
abspath
将名称转换为绝对文件(从文件系统根目录开始)。 dirname
删除最后一个(文件名)组件,留下目录,join
使用适合您平台的分隔符将目录路径和文件名放在一起('/'
对于大多数操作系统,'\'
Windows).