Я пытаюсь запустить список файлов в каталоге через исполняемый файл UNIX, используя python.Я бы выводил исполняемый файл для каждого файла, записанного в другой каталог, но сохранив исходное имя файла.
Я использую python 2.7, поэтому использую метод subprocess.call.Я получаю сообщение об ошибке «объект bool не итеративный», которое, как я предполагаю, связано с той частью, в которой я пытаюсь записать выходные файлы, так как при запуске следующего сценария через консоль я получаю ожидаемый конкретный выводк исполняемому файлу в окне консоли:
import subprocess
import os
for inp in os.listdir('/path/to/input/directory/'):
subprocess.call(['/path/to/UNIX/executable', inp])
Мой код в настоящее время таков:
import subprocess
import os
for inp in os.listdir('/path/to/input/directory/'):
out = ['/path/to/output/directory/%s' % inp]
subprocess.call(['/path/to/UNIX/executable', inp] > out)
Однако эта вторая партия кода возвращает ошибку "'bool' is not iterable".
Я предполагаю, что решение довольно тривиально, поскольку это не сложная задача, однако, как новичок, я не знаю, с чего начать!
РЕШЕНО: после @ barak-itkin'sответ, для тех, кто может столкнуться с этой проблемой в будущем, код был успешно выполнен с использованием следующего:
import subprocess
import os
for inp in os.listdir('/path/to/input/directory/'):
with open('/path/to/output/directory/%s' % inp, 'w') as out_file:
subprocess.call(['/path/to/UNIX/executable', inp], stdout=out_file)