Форум программистов, компьютерный форум, киберфорум
Python
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.94/18: Рейтинг темы: голосов - 18, средняя оценка - 4.94
0 / 0 / 0
Регистрация: 21.08.2013
Сообщений: 2
1

Как в stdin подпроцесса передать данные?

21.08.2013, 10:36. Показов 3218. Ответов 4
Метки нет (Все метки)

Создала file.py.
С его помощью хочу открыть программу. С этим проблем нет. Проблема наступает тогда, когда программа открывается.
Эта прога имеет свою командную строку (terminal pod windows). Я хочу в командной строке написать команду, которая будет открывать нужный мне фаил.txt. Прога будет вызываться в цикле и я не хочу вручную вводить команду открытия файла каждый раз, когда прога будет открываться. Как можно автоматически прописать в file.py, что бы нужная мне команда записывалась в командной строке проги?

Nat
__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
21.08.2013, 10:36
Ответы с готовыми решениями:

Как передать sudo пароль в stdin?
#!/usr/bin/python3 import subprocess with subprocess.Popen(, stdout=subprocess.PIPE) as proc:...

Как считать данные из STDIN напрямую?
Как считать данные из STDIN напрямую?

Как запустить процесс и затем ввести данные в поток stdin?
После выполнения команды, далее выводится требование ввести пароль. А как затем ввести этот пароль...

Как после сигнала QProcess::finished() получить данные, отправленные ему на stdin?
Здравствуйте. QProcess more; more.start("more"); more.write("Text to display");...

4
4423 / 3425 / 347
Регистрация: 12.03.2013
Сообщений: 5,908
21.08.2013, 11:07 2
В первую очередь от программы зависит. Есть ли вообще какой-то способ запускать её с заданным текстом командной строки? Может, она принимает какие-то аргументы? Если нет, можно, например, эмулировать ввод с клавиатуры.

Добавлено через 1 минуту
Или через системные сообщения попробовать.
1
Эксперт Python
4543 / 1969 / 354
Регистрация: 17.03.2012
Сообщений: 9,892
Записей в блоге: 5
21.08.2013, 15:17 3
Вот пример простенького взаимодействия с консольным приложением.
Python
1
2
3
4
5
def GetKey(license_, request):
    pipe = subprocess.PIPE
    proc = subprocess.Popen( "wingkeygen.exe", shell = True, stdin = pipe, stdout = pipe)
    res = proc.communicate(license_+"\n"+request+'\nwindows\n\n')[0]
    return res.split('\r\n')[2].split(':')[5][1:]
1
0 / 0 / 0
Регистрация: 21.08.2013
Сообщений: 2
24.08.2013, 14:30  [ТС] 4
Ответ helter : Способ запускать программу с заданнам текстом есть. У меня не было проблем, когда я работала с терминалом. Программа принимает команды. Я попробую воодить с клавиатуры. Спасибо большое dondublon .
0
4856 / 3277 / 467
Регистрация: 10.12.2008
Сообщений: 10,570
24.08.2013, 23:24 5
Python
1
2
3
4
5
6
7
8
9
#!/usr/bin/env python3
 
import subprocess
import sys
 
p = subprocess.Popen(['cat', '-n'], stdin=sys.stdin, stdout=subprocess.PIPE)
output = p.communicate()[0]
 
print(output.decode('utf-8'), end='')
Код
[guest@localhost py]$ ./proc.py 
a
b
c
     1  a
     2  b
     3  c
[guest@localhost py]$
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
24.08.2013, 23:24

Считать данные с stdin и записать в массив
Мне нужно следующее: писать в поток stdin до тех пор, пока не будет нажата клавиша энтер, потом...

Как передать данные?
на сервере: php на клиенте: клиент на c#.net нужно передать параметр от сервера к клиенту. это...

Как передать данные
1. Как передать данные, которые введены в текстовое поле формы, нажатием кнопки, в качестве...

Как передать данные из android в 1С
Добрый день! Разобралась как запускать андроид приложеньку из 1С, а теперь проблема - как...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.