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

How to detect operating system with GIMP scheme?

我正在使用一些用 GIMP 方案编写的简单脚本集。 (这是我用过最多的方案了...)

我在机器 运行 Windows 或 Linux 上使用它们。大多数时候这不是问题,但有时是问题,即在处理文件路径上的“\”与“/”时。

是否有一种简单的方法可以从 Scheme 脚本中检测 GIMP 运行 在哪个操作系统上? 我在“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 它按预期工作,例如对于(文件-jpeg-加载),使用...

...反斜杠(只需要对它们进行转义):

(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)

像你描述的那样的技巧都是你使用scheme (script-fu)得到的。如果您打算编写成熟的多平台脚本,我建议您改为在 Python 中编写 GIMP 脚本。 (检测 O.S. 是 e import sys 的问题,O.S. 名称在变量 sys.platform 中可用。 - 但是他们,对于这种特定情况,您实际上不需要该系统,因为对于文件访问,该语言会根据 Windows.

下的需要自动将“/”翻译为“\”

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