简单的科学代码前端

时间:2015-01-14 05:58:20

标签: python c++ frontend

目前我有一个程序,我通过命令行将一些参数和文件传递给主可执行文件

e.g。我通过

运行模拟
  

./ exe param1 param2 param3 .. etc

然而,为了使这个代码更加用户友好,我想有一个系统,你可以加载参数文件,并在它们上运行模拟,这似乎与科学代码相同

现在我想转到一个我可以运行类似

的系统
  

./ exe simulation.params

我想创建一个包含所有参数的类

class Parameter {
    //objects that are parameters 
}

然后在我的主程序中传递它,类似于从文件中的变量到模拟中的变量的映射。主程序只是循环输入文件中的每一行,读取信息并初始化该类。

也可以在交互式shell中运行程序或只是传递文件。也许只是检查一个文件(带有一些必要的检查)然后运行,或者只是启动一个交互式会话,

粗略

int main()
{
   if(argc== 1)
   {
    // run simulation on file
   }
   else
   {
     //bring up some menu 
   }

}

这些好习惯吗?大多数参数都是数字,是否有推荐的格式?还有其他有用的库可以帮助实现这样的事情吗?用python创建前端会更好吗?

1 个答案:

答案 0 :(得分:0)

我建议您引入参数名称,其中一个可能是带有设置的文件名。如果你不坚持只基于文件或基于arg的设置,但是允许命令行参数覆盖文件设置会更好。基本上你初始化看起来像这样:

  • 处理命令行参数
  • 从文件加载配置(如果存在)
  • 从命令行
  • 应用配置值

有一个很好的函数getopt,在POSIX标准中定义(这意味着 - 在标准库中可用)。 GNU提供了名为getopt_long的扩展,它允许你同时拥有" long"选项如" - param"。有关getopt / getopt_long的更多信息,请参见示例here