从python配置文件加载变量

问题描述 投票:0回答:1

我将配置保存在 python 文件中并重新加载。由于它从当前工作目录导入一些内容,我想要

load its variables by path

使用

import_module
中的
reload
importlib
似乎不支持指定文件路径。因此我使用
SourceFileLoader
load_module

read_file.py

import os
from importlib.machinery import SourceFileLoader
import time

class File:
    file_path = "D:\\file.py"
    file_modified = os.path.getmtime(file_path)
    file = SourceFileLoader("", file_path).load_module()

def read(f) -> None:
    try:
        last_modified = os.path.getmtime(f.file_path)
        if f.file_modified == last_modified:
            print("Not updated")
            return
        print("Updated")
        f.file_modified = last_modified
        file = SourceFileLoader("", f.file_path).load_module()
        print("X" in f.file.__dict__)  # unexpectedly returns always True
    except Exception as e:
        print(e)

f = File()
print("X" in f.file.__dict__)

while True:
    read(f)
    time.sleep(1)

文件.py

class X:
     pass

在执行过程中,我

rename X to Y
。但它仍然可以访问 X。

True
Not updated
Updated
True
Not updated
Updated
True
Not updated
Updated
True
python configuration reload python-importlib
1个回答
0
投票

你在第 21 行犯了一个小错误。

file = SourceFileLoader("", f.file_path).load_module()
应更新为
f.file = SourceFileLoader("", f.file_path).load_module()

© www.soinside.com 2019 - 2024. All rights reserved.