Подтвердить что ты не робот

Python subprocess.call() "нет такого файла или каталога"

Я нашел несколько вопросов по модулю, но более распространенная проблема, похоже, дает правильный список аргументов, который, я думаю, мне удалось (в конечном итоге)

Я пытаюсь запустить программу, которая ожидает ввода в командной строке,

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

и обычно работает из любого каталога без указания полного пути.

4b9b3361

Ответ 1

which fits2ndf покажет вам путь fits2ndf.

После этого вы можете написать полный путь к вашему коду, и он должен работать.

Пример:

~$ which mv
/bin/mv

Мой код python:

import subprocess

subprocess.call(["/bin/mv","/tmp/a","/tmp/b"])

Ответ 2

Возможно, вы захотите удалить пробел в " /media/tom_hdd/Transfer/reference.sdf"

Кроме того, попробуйте tp поместить все в одну строку, например "fits2ndf /media/tom_hdd/Transfer/reference.fits /media/tom_hdd/Transfer/reference.sdf"

Убедитесь, что вы указали точное направление.