Уведомления

Группа в Telegram: @pythonsu

#1 Сен. 15, 2010 11:05:21

AliasNameless
От:
Зарегистрирован: 2010-09-15
Сообщения: 10
Репутация: +  0  -
Профиль   Отправить e-mail  

Вопрос по subprocess.Popen

Есть такая консольная программа - googlecl, мне нужно написать скипт который отправлял бы ей команды, и читал вывод.

Пример
В консоле это выглядет так:

# google
>
дальше начинает работать программа и в нее можно вводит команды, наример
 > picasa list-albums title
Альбом 1
Альбом 2
дальше программа на закрывается, выводит следующее приглашение и ждет следующей команды.
 >
написал вот такой вот скрипт

import subprocess

proc = subprocess.Popen("google", shell=True, stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE,)


print "First call ======================="

stdout_value, stderr_value = proc.communicate(input="picasa list-albums title")
print 'Out:\n', stdout_value
print 'Error:\n', repr(stderr_value)

print "Second call ======================="

stdout_value, stderr_value = proc.communicate(input="picasa list-albums title")
print 'Out:\n', repr(stdout_value)
print 'Error:\n', repr(stderr_value)
Вывод в консоль такой

C:\Documents and Settings\KurchavyA\Рабочий стол\Новая папка\googlecl-0.9.9\goog
lecl-0.9.9>c:\python25\python.exe pp.py
First call =======================
Out:
> Альбом 1
Альбом 2
>

Error: ''
Second call =======================
Traceback (most recent call last):
File "pp.py", line 16, in <module>
stdout_value, stderr_value = proc.communicate(input="picasa list-albums titl
e")
File "c:\python25\lib\subprocess.py", line 670, in communicate
return self._communicate(input)
File "c:\python25\lib\subprocess.py", line 891, in _communicate
self.stdin.write(input)
ValueError: I/O operation on closed file
Насколько я понял после первой команды, программа закрывается. Что я делаю не так?
Заранее спс!

З.Ы. Пробовал и под вынь и под линь…..



Отредактировано (Сен. 15, 2010 11:08:33)

Офлайн

#2 Сен. 15, 2010 12:56:39

boris_blade
От:
Зарегистрирован: 2009-09-28
Сообщения: 30
Репутация: +  0  -
Профиль   Отправить e-mail  

Вопрос по subprocess.Popen

Попробуйте опишите лучше функцию.
Как я понял после выхова firstcall какой-то файл в программе гугловой закрывается
и чтобы его открыть видимо еще раз нужно вызывать proc = subprocess.Popen(“google”, shell=True, stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE,)

Вот и засуньте все это в функцию.



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version