GAMS中跨平台文件系统操作的最佳实践

时间:2014-03-26 16:12:03

标签: filesystems cross-platform gams-math

我想从一些GAMS代码中操纵文件系统。我是来自这个项目的中游,并作为GAMS新手,但我习惯于用其他语言编写跨平台文件操作。这个代码是跨平台的Linux和Windows是好的。现在有一个注释掉的行

*$call 'mkdir "%runfolder%"'

我想取消评论(启用),但是,我很难找到关于这是否可以跨平台工作的文档(我怀疑没有),如果没有,我怎么能在一个跨平台的方式。

如何我以保证跨平台工作的方式操纵文件系统?

1 个答案:

答案 0 :(得分:3)

尝试使用定义文件分隔符的全局变量。您可以通过查询system.filesys系统变量并相应地设置值来完成此操作。如:

* ----- Platform Specific Adjustments
* Setup the file separator to use for relative pathnames 
$iftheni %system.filesys% == DOS $setglobal filesep "\"
$elseifi %system.filesys% == MS95 $setglobal filesep "\"
$elseifi %system.filesys% == MSNT $setglobal filesep "\"
$else $setglobal filesep "/"
$endif

然后,当您需要指定路径时,可以使用此选项,如:

* ----- Set data and output directories
* By default look for data in the sibling directory "data"
$if NOT set data_dir    $setglobal data_dir ..%filesep%data%filesep%   

请注意,GAMS不允许您缩进$if及相关指令。