есть ли ограничение на буфер command.getstatusoutput () в python - PullRequest
3 голосов
/ 23 февраля 2010

Я создал скрипт для запуска тестового скрипта на пакете файлов, тестировал его всю ночь в течение двух ночей, однако он просто зависает в определенный момент.

Мне было интересно, не является ли здесь команда.getstatusoutput (), так как тестовый скрипт имеет тяжелый механизм ведения журнала.

Обновление:
Чем использование функций модуля подпроцесса отличается от использования os.system (), какой способ работы лучше?

1 Ответ

6 голосов
/ 23 февраля 2010

Метод getstatusoutput() возвращает строку, которая может быть очень длинной и поэтому занимать много места и вызывать разбиение на страницы на диске и другие неприятные вещи.

Поскольку модуль commands в любом случае устарел, лучше использовать модуль subprocess, который обеспечивает файловый доступ к выходным данным процесса. Если вам понадобится вывод на потом, просто запишите его в файл на жестком диске

cmd = subprocess.Popen(['ls'], stdout=file('output', 'w'))

Если вы хотите, чтобы процесс обрабатывал вывод, прочитайте стандартный вывод вот так

cmd = subprocess.Popen(['ls'], stdout=subprocess.PIPE)
for line in cmd.stdout:
    do_stuff(line)

Что будет проще в вашей памяти.

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