我正在使用一些用GIMP计划编写的简单脚本文件。 (这是我用过的最多的方案......)
我在运行Windows或Linux的计算机上使用它们。大多数时候这不是一个问题,但有时它是,即在处理' \'与' /'在文件路径上。
是否有一种简单的方法可以检测GIMP正在运行的操作系统,从一个Scheme脚本 - fu?我还没有找到任何内容" Revised^5 Report on the Algorithmic Language Scheme " (但我可能没有找到正确的地方)
我可以做的一个技巧检查是否存在给定文件,例如,以下工作正常
(define (script-fu-operating-system)
(let* ((the-os "windows"))
(if (= 1 (car (file-glob "/usr/bin/gimp" 0)))
(set! the-os "linux"))
(gimp-message the-os)))
根据Michael Schumacher的建议,我尝试使用' /'和' \'。
在Windows上,它按预期工作,例如for(file-jpeg-load),with ...
...反斜杠(只需要逃避它们):
(file-jpeg-load RUN-INTERACTIVE "C:\\Users\\my.user\\Pictures\\test.jpg" "")
...斜线:
(file-jpeg-load RUN-INTERACTIVE "C:/Users/my.user/Pictures/test.jpg" "")
...甚至可以使用混合(背面)斜线!!
(file-jpeg-load RUN-INTERACTIVE "C:/Users\\my.user/Pictures\\test.jpg" "")
然而对于(file-glob)它只适用于正确的反斜杠:
(file-glob "C:\\Users\\my.user\\Pictures\\*.jpg" 1) => OK (the file list)
(file-glob "C:/Users/my.user/Pictures/*.jpg" 1) => NOK (empty list)
答案 0 :(得分:2)
你所描述的技巧就是你要使用的方案(script-fu)。如果您打算编写完整的多平台脚本,我建议您用Python编写GIMP脚本。 (检测O.S.是e import sys的问题,O.S.名称在变量sys.platform中可用。 - 但是他们,你实际上并不需要这个特殊情况的系统,因为对于文件访问,语言会自动翻译" /"到" \"在Windows下需要。
此外,除了标准库只是标准Python安装中使用的一小部分之外,方案通常更难学习,编写和维护。我可以推荐Script-fu而不是scheme的唯一情况是:如果你已经熟练使用scheme / lisp而不是Python,或者,如果你只是调整/修复现有的脚本。