Я пытаюсь эмулировать ./RunModels.scr < validationInput > validationOutput
Изначально я написал это:
Код: Выделить всё
os.chdir(atm)
vin = open("validationInput", 'r')
vout = open("validationOutput", 'w')
subprocess.call(['./RunModels.scr'], stdin=vin, stdout=vout, shell=True)
vin.close()
vout.close()
os.chdir(home)
Изменить (дополнительный вопрос) :
Спасибо за ответы, мне нужен был полный путь к моему bash.exe в качестве первого параметра. Однако теперь вызовы командной строки из RunModels.scr возвращаются в вывод Python как команда не найдена. Например, ls, cp, make. Есть какие-нибудь предложения по этому поводу?
Последующий шаг 2:
Я обновил свой вызов следующим образом:
Код: Выделить всё
subprocess.call(['C:\\cygwin64\\bin\\bash.exe', '-l', 'RunModels.scr'], stdin=vin, stdout=vout, cwd='C:\\path\\dir_where_RunModels\\')Использование cwd, похоже, не оказывает никакого влияния на эту ошибку, в любом случае подпроцесс ищет в /usr/bin/bash RunModels.scr.
САМООТВЕТ
Мне нужно было указать путь к RunModels.scr в вызове как а также использование cwd.
Код: Выделить всё
subprocess.call(['C:\\cygwin64\\bin\\bash.exe', '-l', 'C:\\path\\dir_where_RunModels\\RunModels.scr'], stdin=vin, stdout=vout, cwd='C:\\path\\dir_where_RunModels\\')Независимо от указания cwd, команды, выполняемые RunModels.scr, выдают ошибки, как будто RunModels.scr находится в неправильном каталоге. Сценарий выполняется, но cp и cd выдают ошибку: нет такого файла или каталога. Если я перейду к месту, где находится RunModels.scr, через командную строку и выполню его по старинке, я не получу этих ошибок.
Подробнее здесь: https://stackoverflow.com/questions/416 ... on-windows
Мобильная версия