Найти - Пользователи
Полная версия: Вопрос по subprocess.Popen
Начало » Python для новичков » Вопрос по subprocess.Popen
1
AliasNameless
Есть такая консольная программа - 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
Насколько я понял после первой команды, программа закрывается. Что я делаю не так?
Заранее спс!

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

Вот и засуньте все это в функцию.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB