J'ai trouvé quelques questions sur le module, mais le problème le plus courant semble être de bien définir la liste des arguments, ce que je pense avoir réussi (éventuellement).
J'essaie de lancer un programme qui attend une entrée comme celle-ci dans la ligne de commande,
fits2ndf in out
avec 'in' étant le chemin du fichier à convertir et 'out' le chemin et le nom du fichier dans lequel enregistrer le résultat.
Donc, en utilisant le sous-processus,
subprocess.call(["fits2ndf","/media/tom_hdd/Transfer/reference.fits","/media/tom_hdd/Transfer/reference.sdf"])
cela s'élève,
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/lib/python2.7/subprocess.py", line 493, in call
return Popen(*popenargs, **kwargs).wait()
File "/usr/lib/python2.7/subprocess.py", line 679, in __init__
errread, errwrite)
File "/usr/lib/python2.7/subprocess.py", line 1249, in _execute_child
raise child_exception
OSError: [Errno 2] No such file or directory
Le réglage de Shell=TRUE
(que je sais mauvais) produit le même résultat. Pas sûr que ce soit pertinent, mais j'utilise tcsh. Aucune suggestion?
Modifier en réponse aux questions
Je n'ai pas défini de façon permanente le chemin PATH mais fits2ndf
fait partie d'un paquet de programmes que j'initialise en utilisant
% tcsh
% setenv STARLINK_DIR /home/tomq/star-kapuahi
% source $STARLINK_DIR/etc/login
% source $STARLINK_DIR/etc/cshrc
et fonctionne normalement à partir de n'importe quel répertoire sans spécifier le chemin complet.
which fits2ndf
va vous montrer le chemin de fits2ndf.
Après cela, vous pouvez écrire le chemin complet de votre code et cela devrait fonctionner.
Ex:
~$ which mv
/bin/mv
Mon code python:
import subprocess
subprocess.call(["/bin/mv","/tmp/a","/tmp/b"])
Vous voudrez peut-être supprimer l'espace dans " /media/tom_hdd/Transfer/reference.sdf"
Aussi, essayez de tout mettre dans une chaîne, comme "fits2ndf /media/tom_hdd/Transfer/reference.fits /media/tom_hdd/Transfer/reference.sdf"
Assurez-vous de pointer dans la direction exacte.