如何使用GIMP方案检测操作系统?

时间:2015-04-21 23:06:25

标签: operating-system scheme gimp script-fu

我正在使用一些用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)

1 个答案:

答案 0 :(得分:2)

你所描述的技巧就是你要使用的方案(script-fu)。如果您打算编写完整的多平台脚本,我建议您用Python编写GIMP脚本。 (检测O.S.是e import sys的问题,O.S.名称在变量sys.platform中可用。   - 但是他们,你实际上并不需要这个特殊情况的系统,因为对于文件访问,语言会自动翻译" /"到" \"在Windows下需要。

此外,除了标准库只是标准Python安装中使用的一小部分之外,方案通常更难学习,编写和维护。我可以推荐Script-fu而不是scheme的唯一情况是:如果你已经熟练使用scheme / lisp而不是Python,或者,如果你只是调整/修复现有的脚本。