2

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

正如迈克尔舒马赫所建议的那样,我尝试同时使用“/”和“\”。

在 Windows 上,它按预期工作,例如对于 (file-jpeg-load),使用 ...

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

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

1 回答 1

1

像你描述的那样的技巧是你使用方案(script-fu)所能得到的。如果您打算编写成熟的多平台脚本,我建议您改用 Python 编写 GIMP 脚本。(检测操作系统是 e import sys 的问题,并且操作系统名称在变量 sys.platform 中可用。但是对于这种特殊情况,您实际上不需要系统,因为对于文件访问,语言会自动翻译“/ " 到 "\" 在 Windows 下根据需要。

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

于 2015-05-01T17:34:51.887 回答