nos*_*nos 12 python serialization file input
我正在编写一个Python类来为进程建模,我想从文件中初始化参数,比方说'input.dat'.输入文件的格式如下所示.
'input.dat' 文件:
Z0: 0 0
k: 0.1
g: 1
Delta: 20
t_end: 300
Run Code Online (Sandbox Code Playgroud)
我写的代码如下.它有效但看起来多余且不灵活.有没有更好的方法来完成这项工作?比如循环做readline()然后匹配关键字?
def load(self,filename="input.dat"):
FILE = open(filename)
s = FILE.readline().split()
if len(s) is 3:
self.z0 = [float(s[1]),float(s[2])] # initial state
s = FILE.readline().split()
if len(s) is 2:
self.k = float(s[1]) # kappa
s = FILE.readline().split()
if len(s) is 2:
self.g = float(s[1])
s = FILE.readline().split()
if len(s) is 2:
self.D = float(s[1]) # Delta
s = FILE.readline().split()
if len(s) is 2:
self.T = float(s[1]) # end time
Run Code Online (Sandbox Code Playgroud)
Ben*_*oyt 19
假设params来自一个安全的地方(由您或用户制作,而不是互联网),只需将参数文件设为Python文件,即params.py:
Z0 = (0, 0)
k = 0.1
g = 1
Delta = 20
t_end = 300
Run Code Online (Sandbox Code Playgroud)
然后在您的代码中,您只需要:
import params
fancy_calculation(10, k=params.k, delta=params.Delta)
Run Code Online (Sandbox Code Playgroud)
这样做的好处有两方面:1)简单,2)你可以在参数描述中使用Python的强大功能 - 在这里特别有用,例如:
k = 0.1
Delta = 20
g = 3 * k + Delta
Run Code Online (Sandbox Code Playgroud)
或者,您可以使用Python的内置JSON或ConfigParser .INI解析器模块.
| 归档时间: |
|
| 查看次数: |
30340 次 |
| 最近记录: |