2017-01-22 1 views
2

J'ai donc découvert l'extension python pour SPSS, et tout fonctionne bien, j'ai créé des scripts maintenant et je les ai inclus dans la carte des extensions et ça marche très bien. Cependant, maintenant j'ai créé un couple de scripts qui nécessitent des arguments, je pensais que je pouvais simplement suivre la même méthode mais je suppose que non.créer une extension pour SPSS avec python

def Run(args): 
    import spss 
    def testing_p(variables): 
     all_variables = [spss.GetVariableName(i) for i in range(spss.GetVariableCount())] 
     variable_nr = [all_variables.index(i) for i in variables] 

     print all_variables 
     print variable_nr 

Avec le fichier .xml-suivante:

<Command xmlns="http://xml.spss.com/extension" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Name="testing_p" Language="Python"> 
</Command> 

Cependant, ce donjon jeter l'erreur lors de l'appel testing_p ([ 'my_var', 'my_var2']):

Warnings 
This command should specify a valid subcommand at the beginning. 
Execution of this command stops. 

Je ne peux pas envelopper ma tête autour de cela parce que tout fonctionne bien quand il n'est pas mis dans la carte des extensions et seulement faire:

BEGIN PROGRAM. 
import spss 
def testing_p(variables): 
    all_variables = [spss.GetVariableName(i) for i in range(spss.GetVariableCount())] 
    variable_nr = [all_variables.index(i) for i in variables] 

    print all_variables 
    print variable_nr 
END PROGRAM. 

Répondre

1

Pour une extension qui peut être écrite en Python, R ou Java, vous devez créer une spécification de syntaxe contenant le nom de la commande, toutes les sous-commandes, ainsi que les arguments et les types d'argument souhaités. Voici une image du début d'un (SPSSINC_TURF, qui est installé avec Statistics). enter image description here

Ceci guidera l'analyseur de statistiques dans la vérification de l'entrée de l'utilisateur. Il appelle ensuite la fonction Run avec une structure compliquée contenant l'entrée de l'utilisateur. Vous pouvez utiliser les fonctions du module extensions pour les mapper à vos variables Python et effectuer d'autres validations. Voici une image du début de la fonction Run pour SPSSINC TURF.

enter image description here

Enfin, si la syntaxe est valide, votre fonction Exécuter appelle la fonction de travailleur de faire quelque chose d'utile, connectant tous les paramètres aux arguments spécifiés en appelant

processcmd (oobj, args, Superturf , vardict = spssaux.VariableDict())
qui a été importé depuis extensions.py.

Examinez le document pour rechercher les extensions dans le système d'aide et consultez des exemples d'extensions installées avec Statistics. Enfin, voici une diapositive de l'une de mes présentations résumant le flux de l'entrée de l'utilisateur aux résultats.

enter image description here

+0

Un autre point: si vous ne voulez pas utiliser tout l'appareil de syntaxe, vous pouvez utiliser la commande d'extension PROGRAMME SPSSInc. Vous lui donnez le nom du module/fonction que vous voulez exécuter et les arguments en utilisant la structure argv de la ligne de commande Python. Bien que ce soit beaucoup plus simple, vous n'obtenez pas la validation et l'emballage du mécanisme d'extension complet. Exécutez SPSSINC PROGRAM/HELP pour plus de détails. – JKP