2015-04-21 1 views
2

J'utilise quelques scripts-fus simples écrits dans le schéma de GIMP. (Et c'est le plus que j'ai utilisé de schéma ...)Comment détecter le système d'exploitation avec le schéma GIMP?

Je les utilise sur des machines fonctionnant sous Windows ou Linux. La plupart du temps, ce n'est pas un problème, mais parfois c'est le cas, à savoir quand il s'agit de '\' ou '/' sur les chemins de fichiers.

Existe-t-il un moyen simple de détecter sur quel système d'exploitation GIMP s'exécute, à partir d'un script-fu Scheme? Je n'ai pas trouvé quoi que ce soit sur « Revised^5 Report on the Algorithmic Language Scheme » (mais je ne l'ai pas regardé au bon endroit)

Un truc je peux faire est de vérifier l'existence d'un fichier donné, par exemple, les travaux suivants Comme l'a suggéré Michael Schumacher, j'ai essayé d'utiliser à la fois '/' et '\'.

Sous Windows, cela a fonctionné comme prévu, par ex. pour (fichier jpeg-charge), avec ...

... antislashs (n'a besoin que de leur échapper):

(file-jpeg-load RUN-INTERACTIVE "C:\\Users\\my.user\\Pictures\\test.jpg" "") 

... barres obliques:

(file-jpeg-load RUN-INTERACTIVE "C:/Users/my.user/Pictures/test.jpg" "") 

.. fonctionne même avec des barres obliques mixtes

(file-jpeg-load RUN-INTERACTIVE "C:/Users\\my.user/Pictures\\test.jpg" "") 

Pourtant, pour (fichier glob) il ne fonctionne qu'avec les appropriés antislashs:

(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

/devrait également fonctionner sur Windows (même dans l'Explorateur Windows, bien qu'il les change à \ après avoir confirmé un chemin). Cela ne fonctionne-t-il pas pour vous? –

+1

Des trucs comme ça sont tout ce que tu vas faire en utilisant le schéma. (script-fu). Si vous avez l'intention d'écrire des scripts multi-plateformes à part entière, je vous suggère d'écrire vos scripts GIMP en Python à la place. (Détecter le système d'exploitation est une question de 'sys d'importation 'et le nom d'OS est disponible dans la variable' sys.platform' - mais eux, vous n'en avez pas besoin car pour l'accès au fichier, la langue traduit automatiquement "/" "\" si nécessaire sous Windows .. De plus, vous pourriez apprécier le fait que pour assigner une variable, vous écrivez 'the_os =" tout ce que je veux "' '' '(* the_os" value ")). ..) ' – jsbueno

+0

@MichaelSchumacher Oui,/fonctionne sous Windows ... Parfois avec (fichier-jpeg-load), mais pas avec (fichier-glob) Merci de l'avoir signalé, je l'ai ajouté à ma question, pour référence future.Désolé de prendre si longtemps pour suivre mais je n'ai que Windows au travail et seulement aujourd'hui je pourrais prendre un moment pour tester cela –

Répondre

2

astuces comme ce que vous décrivez sont tout ce que vous obtenez va schéma à l'aide (script-fu). Si vous avez l'intention d'écrire des scripts multi-plateformes à part entière, je vous suggère d'écrire vos scripts GIMP en Python à la place. (La détection du système d'exploitation est une question d'importation sys et le nom du système d'exploitation est disponible dans la variable sys.platform - mais eux, vous n'auriez pas vraiment besoin du système pour ce cas spefic, car pour l'accès au fichier, la langue se traduit automatiquement/"to" \ "au besoin sous Windows

De plus, le schéma est généralement plus difficile à apprendre, à écrire et à maintenir, en plus d'avoir une bibliothèque standard qui est une fraction de celle utilisée dans une installation Python standard. Je pourrais recommander Script-fu au lieu de schéma sont: si vous êtes déjà compétent dans le schéma/Lisp et pas du tout Python, ou, si vous adaptez simplement/corriger un script existant