创建依赖于属性文件的子模块

时间:2018-11-09 19:45:37

标签: python import python-import python-3.7

我具有以下结构

main.py
module/
    properties.yaml
    file.py

file.py相关代码:

def read_properties():
    with open('properties.yaml') as file:
        properties = yaml.load(file)

main.py相关代码:

from module import file
file.read_properties()

在main.py中调用read_properties()时,出现以下错误:FileNotFoundError: [Errno 2] No such file or directory: 'properties.yaml'

建议什么方法允许我的模块即使在导入后也访问属性文件?

3 个答案:

答案 0 :(得分:0)

提供到properties.yaml的绝对路径:

with open('/Users/You/Some/Path/properties.yaml') as file:

答案 1 :(得分:0)

正如JacobIRR在回答中所说,最好使用文件的绝对路径。我使用os模块根据当前工作目录构造绝对路径。因此,对于您的代码,它类似于:

do

答案 2 :(得分:0)

基于@JacobIRR和@BigGerman的答案

我最终使用pathlib而不是os,但是逻辑是相同的。 这是针对那些感兴趣的人的pathlib语法:

在file.py中:

select count(*)
from (SELECT wage, AVG(wage) over() AS avgWage 
      FROM emp_wages
     ) t
where wage < avgWage