我正在编写一个 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包: Can I look for config/yml file from project directory which called it?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52994289/