Форум сайта python.su
Есть такая консольная программа - googlecl, мне нужно написать скипт который отправлял бы ей команды, и читал вывод.
Пример
В консоле это выглядет так:
>
> 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)
Офлайн
Попробуйте опишите лучше функцию.
Как я понял после выхова firstcall какой-то файл в программе гугловой закрывается
и чтобы его открыть видимо еще раз нужно вызывать proc = subprocess.Popen(“google”, shell=True, stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE,)
Вот и засуньте все это в функцию.
Офлайн