2013-08-21 7 views
2

afin d'exécuter un script python (qui a plusieurs paramètres de ligne de commande) à partir de Java, je suis en train d'utiliser est le code java suivantUtiliser ProcessBuilder pour exécuter un script python avec des options de ligne de commande

String[] command = {"script.py", "run", 
        "-arg1", "val1", 
        "-arg2", "val2" ,   
        "-arg3" , "val_31 val_32", 
     }; 

ProcessBuilder probuilder = new ProcessBuilder(command); 
Process process = probuilder.start(); 

Pour instance que j'ai l'intention d'exécuter la commande suivante:

./script.py run -arg1 val1 -arg2 val2 -arg3 val_31 val_32 

Notez que le paramètre arg3 prend une liste de valeurs de paramètre.

Le problème auquel je suis confronté est que je n'ai pas trouvé un moyen de passer une liste de valeurs au paramètre arg3.

J'apprécierais vraiment si quelqu'un pourrait me donner quelques conseils afin de s'attaquer à mon problème.

J'ai déjà fait une recherche, mais je n'ai pas trouvé de réponse adaptée à mes besoins, si quelqu'un trouve le bon lien s'il vous plaît faites le moi savoir.

Meilleur!

Répondre

2

Il suffit de les donner sous forme de chaînes séparées dans le tableau, au lieu de combiner les deux derniers en "val_31 val_32":

String[] command = {"script.py", "run", 
        "-arg1", "val1", 
        "-arg2", "val2" ,   
        "-arg3" , "val_31", "val_32", 
     }; 

Sinon, il échappera à l'espace entre val_31 et val_32 parce que vous dites que ce qu'ils sont un seul paramètre. Par ailleurs, vous pouvez également utiliser le constructeur varargs et sauter d'avoir à créer un tableau, si vous voulez:

ProcessBuilder probuilder = new ProcessBuilder("script.py", "run", 
        "-arg1", "val1", 
        "-arg2", "val2" ,   
        "-arg3" , "val_31", "val_32"); 
+0

Great! Cela a fonctionné! Merci beaucoup! – pafede2

Questions connexes