Я использую конструктор Popen
из subprocess
для захвата вывода команды, которую я выполняю в моем скрипте python:
import os
from subprocess import Popen, PIPE
p = Popen(["my-cli", "ls", "/mypics/"], stdin=PIPE, stdout=PIPE,stderr=PIPE)
output, err = p.communicate()
print(output)
print(output.count('jpg'))
Моя цель - сохранить выходной файл имена как массив строк.
Однако, когда я печатаю output
, я замечаю, что вместо сохранения имен файлов в виде строк, скрипт сохраняет каждый байт (букву) каждого файла в виде строки. Следовательно, вывод на печать выглядит следующим образом:
f
i
l
e
.
j
p
g
1
Поэтому вместо печати одного имени файла file.jpg
я получаю распечатку из 8 отдельных символов, составляющих имя файла. Но выполнение команды ls
непосредственно в терминале будет просто перечислять имена файлов строка за строкой, как и должно быть.
Что я делаю не так в этом сценарии и какой здесь обходной путь? Я работаю Python 2.7. Любые предложения приветствуются
.