Я не считаю, что wget
использует проклятия.
Обычно, когда я хочу использовать wget
в сценарии я хотел бы использовать опцию -O -
, чтобы заставить его вывод в стандартный вывод . Я подозреваю, что вы пытаетесь захватить текст, который обычно см. На вашей консоли, когда вы его запускаете, что будет stderr.
из командной строки, вне Python, просто запустите команду, как:
wget -O - http://www.somesite.org/ > /tmp/wget.out 2> /tmp/wget.err
Затем посмотрите на два выходных файлов. Если вы видите какой-либо вывод от wget
на своей консоли/терминале, то вы используете какой-то другой вкус команды, чем я видел.
Если, как я подозреваю, вас интересуют сообщения stderr, тогда у вас есть два варианта.
- Изменения вашей команды, чтобы добавить-> & 1 и добавить
shell=True
к вашим Popen()
аргументам
- Альтернативно (и предпочтительно) добавить
stderr=subprocess.PIPE
своего Popen()
аргументов
бывшее очень удобно, если вы weren» t с использованием stdout в любом случае (при условии, что вы используете wget
для извлечения данных и записи их в файлы). В последнем случае вы читаете из файла stderr, чтобы получить ваши данные.
КСТАТИ: если вы действительно нужно захватить проклятий данные ... вы могли бы попробовать использовать стандартный PTy модуль, но я бы не рекомендовал это. Вы были бы гораздо лучше Извлечение pexpect
модуль из:
И не отпугивает возраста или нумерации версий, он работает на Python 2.5 и 2.6 а также 2.4 и 2.3.
Я не думаю, что wget использует проклятия. Он просто печатает свои сообщения в stderr, а не в stdout. –
Для случая wget это, вероятно, stderr, который вам нужно перехватить (см. Http://blog.doughellmann.com/2007/07/pymotw-subprocess.html для некоторых примеров). Для перехвата программ проклятий - я подозреваю, что очень утомительны, когда вам нужно подражать терминалу ... –
Плохо, я думал, что для обновления существующей строки вам нужно было использовать проклятия. –