Уведомления

Группа в Telegram: @pythonsu

#1 Янв. 7, 2011 13:35:12

afix
От:
Зарегистрирован: 2011-01-07
Сообщения: 4
Репутация: +  0  -
Профиль   Отправить e-mail  

Работа с консолью

Здравствуйте! Как можно отправлять текст на консольный ввод программы и получать ее консольный вывод?



Офлайн

#2 Янв. 7, 2011 13:59:31

regall
От: Киев
Зарегистрирован: 2008-07-17
Сообщения: 1583
Репутация: +  3  -
Профиль   Отправить e-mail  

Работа с консолью

>>> print raw_input('input something: ')
input something: HA!
HA!
>>>



Офлайн

#3 Янв. 7, 2011 15:02:00

afix
От:
Зарегистрирован: 2011-01-07
Сообщения: 4
Репутация: +  0  -
Профиль   Отправить e-mail  

Работа с консолью

Извиняюсь, некорректно задал вопрос. Имелась в виду работа с консолью не своей программы



Офлайн

#4 Янв. 7, 2011 16:51:07

regall
От: Киев
Зарегистрирован: 2008-07-17
Сообщения: 1583
Репутация: +  3  -
Профиль   Отправить e-mail  

Работа с консолью

Тогда вам сюда.



Офлайн

#5 Янв. 7, 2011 18:51:20

doza_and
От:
Зарегистрирован: 2010-08-15
Сообщения: 4138
Репутация: +  252  -
Профиль   Отправить e-mail  

Работа с консолью

Этот вопрос обсуждался в этом формуме, извините не умею цитировать там был код:

import subprocess as sp
import time
from threading import Thread

class Tcmd(Thread):
def __init__ (self):
Thread.__init__(self)
self.evt=threading.Event()
def run(self):
self.c=sp.Popen(["cmd"],stdin=sp.PIPE,stdout=sp.PIPE)
self.evt.set()
while 1:
a=self.c.stdout.readline()
if not a:
break
print("send:"+a)
def put(self,cmd):
self.c.stdin.write(cmd)

obj=Tcmd()
obj.start()
obj.evt.wait()
obj.put("dir\n")
time.sleep(2)
obj.put("echo\n")
time.sleep(2)
obj.put("exit\n")
obj.join()
это сваливание команд во входной поток и подбирание того что выпадет



Офлайн

#6 Янв. 7, 2011 23:03:53

afix
От:
Зарегистрирован: 2011-01-07
Сообщения: 4
Репутация: +  0  -
Профиль   Отправить e-mail  

Работа с консолью

Спасибо, буду разбираться



Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version