2

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

*$call 'mkdir "%runfolder%"'

我想取消评论(启用),但是,我很难找到关于这是否可以跨平台工作的文档(我怀疑不是),如果不是,我如何在跨平台中做到这一点方式。

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

4

1 回答 1

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和相关指令。

于 2014-03-26T18:23:27.297 回答