如何从 C 头文件中的全局变量列表中有效地导入 Python 中的值
How to import efficiently values in Python from a list of global variables in a C header file
我想找到一种高效快捷的方法将全局变量列表的值从 C 头文件加载到 Python。例如,假设我有文件 header.h:
/* comments */
int param_nx=2049; // comment
int param_ny=2049; // comment
double param_dt=0.01; // comment
有没有一种简单的方法可以用 Python 读取这个文件,跳过注释,并在那里定义相应的变量?我不介意使用相同的变量名。
试试这个。
import re
r = re.compile("(double|int) ([a-zA-Z_]+)=([0-9\.]+)")
header = """/* comments */
int param_nx=2049; // comment
int param_ny=2049; // comment
double param_dt=0.01; // comment"""
params = {}
for line in header.split("\n"):
m = r.search(line.strip())
if m:
if m.group(1) == "int":
params[m.group(2)] = int(m.group(3))
elif m.group(1) == "double":
params[m.group(2)] = float(m.group(3))
print(params)
输出:
{'param_dt': 0.01, 'param_nx': 2049, 'param_ny': 2049}
我想找到一种高效快捷的方法将全局变量列表的值从 C 头文件加载到 Python。例如,假设我有文件 header.h:
/* comments */
int param_nx=2049; // comment
int param_ny=2049; // comment
double param_dt=0.01; // comment
有没有一种简单的方法可以用 Python 读取这个文件,跳过注释,并在那里定义相应的变量?我不介意使用相同的变量名。
试试这个。
import re
r = re.compile("(double|int) ([a-zA-Z_]+)=([0-9\.]+)")
header = """/* comments */
int param_nx=2049; // comment
int param_ny=2049; // comment
double param_dt=0.01; // comment"""
params = {}
for line in header.split("\n"):
m = r.search(line.strip())
if m:
if m.group(1) == "int":
params[m.group(2)] = int(m.group(3))
elif m.group(1) == "double":
params[m.group(2)] = float(m.group(3))
print(params)
输出:
{'param_dt': 0.01, 'param_nx': 2049, 'param_ny': 2049}