我想从一些GAMS代码中操纵文件系统。我是来自这个项目的中游,并作为GAMS新手,但我习惯于用其他语言编写跨平台文件操作。这个代码是跨平台的Linux和Windows是好的。现在有一个注释掉的行
*$call 'mkdir "%runfolder%"'
我想取消评论(启用),但是,我很难找到关于这是否可以跨平台工作的文档(我怀疑没有),如果没有,我怎么能在一个跨平台的方式。
如何我以保证跨平台工作的方式操纵文件系统?
答案 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
及相关指令。