Я написал небольшую программу на питоне, которая пишет сценарий C-оболочки, а затем вызывает сценарий с подпроцессом. Тем не менее, python не выполняет сценарий. Я протестировал это в терминале и обнаружил, что сценарий также не будет запущен с терминала (т. Е. Не проблема с python). Дальнейшее тестирование показало, что я могу написать идентичный скрипт в текстовом редакторе (vi), а затем успешно выполнить его с терминала (т. Е. Я не думаю, что содержимое скрипта виновато). В конце концов я обнаружил, что если бы я попытался запустить вывод из python непосредственно в терминале с ./myscript.com
, он бы не бежать. Однако, если я открываю с помощью vi, make NO изменяет, сохраняет, а затем запускается с терминала с помощью ./myscript.com
(т. Е. Точно такой же команды), который он выполнит. Скрипт включен ниже, в случае его использования, однако, большая часть содержимого очень специфична для конкретной программы, которую я пытаюсь запустить. Я не знаю, как отлаживать это дальше, или почему эффект открытия, сохранения и закрытия в vi достаточен, чтобы позволить сценарию быть выполненным. (Например, я проверил разрешения, и они не изменились после этапа vi.) Любые предложения о том, как действовать, что очень ценится.Запуск сценария оболочки из python
#!/bin/csh
#
bin2pipe -in /full/path/to/this/script/recon.spc -bad 0.0 -noswap \
-xN 1714 \
-xT 1714 \
-xFT Freq \
-xMODE Real \
-xSW 4184.570312 \
-xCAR 10.929523 \
-xOBS 800.130005 \
-xLAB 1H \
-yN 2048 \
-yT 2048 \
-yFT Freq \
-yMODE Real \
-ySW 1700.680054 \
-yCAR 125.728023 \
-yOBS 81.075996 \
-yLAB 1H \
-ndim 2 \
|nmrPipe -fn TP -auto \
|nmrPipe -fn REV \
|nmrPipe -fn TP -auto \
-out recon.spc.pipe.ft2 -ov -verb
Как вы это называете от Python? –
Из python Я называю его как «subprocess.call (FileName)», предварительно установив права доступа к файлу, чтобы он исполнялся с помощью 'os.chmod (FileName, 0o755). Одна вещь, которую я заметил, это открытие, сохранение и закрытие vi добавляет 1 байт к размеру файла (от 492 до 493 байта). Я не знаю, является ли это значительным, или добавляется этот дополнительный байт. – 218
Вы можете сравнить два байта файлов для байта и посмотреть, что другое. Являются ли эквивалент * новой строки *? Unicode против ascii? – wwii