Ответ 1
which fits2ndf
покажет вам путь fits2ndf.
После этого вы можете написать полный путь к вашему коду, и он должен работать.
Пример:
~$ which mv
/bin/mv
Мой код python:
import subprocess
subprocess.call(["/bin/mv","/tmp/a","/tmp/b"])
Я нашел несколько вопросов по модулю, но более распространенная проблема, похоже, дает правильный список аргументов, который, я думаю, мне удалось (в конечном итоге)
Я пытаюсь запустить программу, которая ожидает ввода в командной строке,
fits2ndf in out
с 'in', являющимся файловым путем для файла, который нужно преобразовать, и 'out' - путь и имя файла, чтобы сохранить результат.
Итак, используя Subprocess,
subprocess.call(["fits2ndf","/media/tom_hdd/Transfer/reference.fits","/media/tom_hdd/Transfer/reference.sdf"])
это поднимается,
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
Настройка shell=TRUE
(что я знаю плохо) дает тот же результат. Не уверен, что это актуально, но я использую tcsh. Любые предложения?
Изменить в ответ на вопросы
Я еще не установил PATH на постоянной основе, однако fits2ndf
является частью пакета программ, которые я инициализирую с помощью
% tcsh
% setenv STARLINK_DIR /home/tomq/star-kapuahi
% source $STARLINK_DIR/etc/login
% source $STARLINK_DIR/etc/cshrc
и обычно работает из любого каталога без указания полного пути.
which fits2ndf
покажет вам путь fits2ndf.
После этого вы можете написать полный путь к вашему коду, и он должен работать.
Пример:
~$ which mv
/bin/mv
Мой код python:
import subprocess
subprocess.call(["/bin/mv","/tmp/a","/tmp/b"])
Возможно, вы захотите удалить пробел в " /media/tom_hdd/Transfer/reference.sdf"
Кроме того, попробуйте tp поместить все в одну строку, например "fits2ndf /media/tom_hdd/Transfer/reference.fits /media/tom_hdd/Transfer/reference.sdf"
Убедитесь, что вы указали точное направление.