Проверка, выдает ли команда вывод - PullRequest
0 голосов
/ 10 августа 2009

Я использую следующий вызов для выполнения команды aspell в некоторых строках Python:

r,w,e = popen2.popen3("echo " +str(m[i]) + " | aspell -l")

Я хочу проверить работоспособность функции, глядя на объектный файл stdout r. Если выходных данных нет, команда выполнена успешно.

Какой лучший способ проверить это в Python? Заранее спасибо.

Ответы [ 2 ]

2 голосов
/ 10 августа 2009

Почему бы вам не использовать aspell -a?

Вы можете использовать подпроцесс, как указано Алексом, но держать канал открытым. Следуйте указаниям для использования API канала aspell, и оно должно быть довольно эффективным.

Плюс в том, что вам не нужно проверять пустую строку. Вы всегда можете прочитать с stdout, зная, что вы получите ответ. Это заботится о многих проблемных условиях гонки.

2 голосов
/ 10 августа 2009

Лучше всего использовать модуль subprocess из стандартной библиотеки Python, см. здесь - popen2 устарел и не рекомендуется.

В любом случае, в вашем коде if r.read(1): - это быстрый способ проверить, есть ли какой-либо контент в r (если вас не волнует, каким именно он может быть).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...