Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > Python: Общие вопросы > Прочитать данные |
Автор: HellanD 30.8.2006, 16:02 |
Задача такая из командной строки можно вызвать файл задав ему некоторые параметры В результате файл выведет данные в зависимости от параметров. Вопрос: Необходимо запустить файл из ПИТОНА (+ задать небходимые параметры) а результат записать в отдельную переменную! Можно ли для этого использовать пайпы? |
Автор: J2A 30.8.2006, 16:30 | ||
Да.
Если нужно разделить stdout/stderr, то для этого есть варианты popen* |
Автор: HellanD 30.8.2006, 16:31 |
Или если немного уточнить требуется сделать запуск программы из питона с задачей параметров (Ну по сути такое можно зделать руками из командной строки) |
Автор: MAKCim 30.8.2006, 16:36 | ||
|
Автор: HellanD 30.8.2006, 17:28 |
Желательно словить не только СТДОУТ но и СТДЕРОР (кокто использовать функу popen3) |
Автор: J2A 30.8.2006, 17:59 | ||
Нужен Py2.4+
P.S. Для подробностей смотри http://docs.python.org/lib/module-subprocess.html |
Автор: slav0nic 31.8.2006, 01:15 |
os.popen2/3 возвращает какраз значения stdout, stderror можно ловить без гиммороя |
Автор: albertn 31.8.2006, 08:33 | ||||
А что еще для счастья надо?
Модуль http://docs.python.org/lib/module-popen2.html |
Автор: J2A 31.8.2006, 09:21 | ||
slav0nic, albertn:
|
Автор: albertn 31.8.2006, 09:23 | ||||
Да, но каждая функция это делает по-своему |
Автор: HellanD 31.8.2006, 11:34 |
Еще не большой ньюанс: В во время выполнения функи popen3 создаеться файлик (так и задумано) и кидаеться в корневую папочку (ну от куда вызывался) а у меня это получаеться рабочий стол.... Подскажите как поменять это на произвольную папку... Спасибо! |
Автор: albertn 31.8.2006, 11:50 | ||
Воспользуйся os.chdir(path) |
Автор: HellanD 31.8.2006, 12:11 |
Вообще я странную вещь заметил... Смотрите вот со страницы: http://docs.python.org/lib/module-popen2.html говорят: popen4( cmd[, bufsize[, mode]]) Executes cmd as a sub-process. Returns the file objects (child_stdout_and_stderr, child_stdin). В тоже время у меня она возврщает данные в такой последовательности: 1.child_stdin 2.child_stdout_and_stderr Что бы это могло быть? |
Автор: albertn 31.8.2006, 12:41 | ||||
У меня все впорядке, никогда таких проблем небыло
Все работает. |
Автор: HellanD 31.8.2006, 12:56 |
Еще ньюанс один: Если я просматриваю СТДОУТ (напр команда sOut.read()) то сообщения теряют стандартное форматирование (ну если из командной строки все сделать то данные выведутся в красивые таблички а у меня вместо сего выводит все подряд включая символы форматирования) Вопрос можно ли както сберечь форму СТДАУТА(НУ И ЕРОРА) Спасибо |
Автор: albertn 31.8.2006, 13:46 | ||
А ты как на экран выводишь через print или как? |
Автор: J2A 31.8.2006, 13:46 |
Пример в студию |
Автор: HellanD 31.8.2006, 14:10 | ||
Вот например такой кусок кода смотрите:
|
Автор: albertn 1.9.2006, 08:29 | ||
Напиши так:
|
Автор: aspolyakov 11.1.2009, 14:09 | ||
Подскажите а popen* может читать ваывод cmd в реальном времени? У меня код есть и читать он вывод с задержкой и одним разом:
|