Кажется, что первая команда, которую вы пытаетесь выполнить, - это cd
в каталог, чего можно добиться, установив параметр cwd
в subprocess.call
.
Чтобы привести небольшой пример, я скопировал двоичный файл echo
в /Users/Samuel/tmp/eecchhoo
. Если я попытаюсь перейти в каталог, а затем вызвать двоичный файл в двух вызовах подпроцесса, у меня произойдет сбой, как вы описали:
>>> import subprocess
>>> subprocess.call('cd /Users/Samuel/tmp', shell=True)
0
>>> subprocess.call('./eecchhoo helloworld', shell=True)
/bin/sh: ./eecchhoo: No such file or directory
127
Однако я могу сделать вызов успешным, установив для параметра cwd
значение, которое я хочу:
>>> import subprocess
>>> subprocess.call('./eecchhoo helloworld', shell=True, cwd='/Users/Samuel/tmp')
helloworld
0
Если вам нужно запустить другие команды (не только для изменения рабочего каталога), вы можете обратиться к этому ответу: Python: выполнить подпроцесс cat параллельно .