从TXT读取参数

gab*_*how 4 python text

我有一个包含一些参数的txt文件。txt文件看起来是这样的:

par1 = 10.81
par2 = 0.3
par3 = 0.5 
Run Code Online (Sandbox Code Playgroud)

我想在Python阅读并自动创建所有的TXT指定的变量。

怎么读取配置文件,并创建其中列出的参数最好的文件?

尤其是说,我有一个类,我怎么能有以下?

class MyClass:
  def __init__(self)
     self.par1 = par1
     self.par2 = par2
     self.par3 = par3
Run Code Online (Sandbox Code Playgroud)

Dee*_*ace 5

危险代码AHEAD

您可以使用exec。考虑文件foo.txt

a = 1
b = 2
c = 3
Run Code Online (Sandbox Code Playgroud)

和代码:

with open('foo.txt') as f:
    for line in f:
        exec(line)
print(a)
# 1
print(b)
# 2
print(c)
# 3
Run Code Online (Sandbox Code Playgroud)

但是,正如标题所述,这是一种危险的方法,foo.txt可以很容易地修改为包含

import os
os.remove('C:\system\a_very_important_system_file')
Run Code Online (Sandbox Code Playgroud)

并且exec将愉快地执行它。

THE安全的方法

更改foo.txt为JSON格式:

{"a": 1,
 "b": 2,
 "c": 3}
Run Code Online (Sandbox Code Playgroud)

并使用json模块加载它在你的代码:

import json

with open('foo.txt') as f:
    variables = json.load(f)

print(variables["a"])
# 1
Run Code Online (Sandbox Code Playgroud)

编辑

如果您需要动态地启动从您可以使用一个未知的JSON文件实例属性setattr

import json

class MyClass:
    def __init__(self):
        with open('foo.txt') as f:
            variables = json.load(f)
        for key, value in variables.items():
            setattr(self, key, value)
Run Code Online (Sandbox Code Playgroud)