Уведомления

Группа в Telegram: @pythonsu

#1 Ноя. 4, 2016 14:26:49

pkroot4
Зарегистрирован: 2016-11-04
Сообщения: 2
Репутация: +  0  -
Профиль   Отправить e-mail  

Строка неправильно воспринимается

У меня есть два файла с исходным кодом:

main.py

 import sys
import subprocess
proc = subprocess.Popen(['python', 'test.py'], stdout=subprocess.PIPE, stdin=subprocess.PIPE, stderr=subprocess.PIPE, shell=True)
c = proc.communicate(input='John'.encode())
print(c[0].decode())
print()
print(c[1].decode())

и test.py
 inp = input()
print("Hello, %s!" % inp)

Затея проста – делаем дочерний процесс => посылаем на стандартный ввод ему имя => процесс просто выводит его => получаем вывод процесса

Но в вывод я получаю ошибку:
 Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name 'John' is not defined

Не могу понять из-за чего это происходит. Строка воспринимается как-то не так что ли. Естественно если тест руками запустить то все будет работать.

Отредактировано pkroot4 (Ноя. 4, 2016 14:32:53)

Офлайн

#2 Ноя. 5, 2016 06:04:51

scidam
Зарегистрирован: 2016-06-15
Сообщения: 288
Репутация: +  35  -
Профиль   Отправить e-mail  

Строка неправильно воспринимается

Думаю shell=True нужно убрать. Ну и printы лучше пока заменить на “print( c ) ”

Отредактировано scidam (Ноя. 5, 2016 06:05:39)

Офлайн

#3 Ноя. 5, 2016 07:56:04

pkroot4
Зарегистрирован: 2016-11-04
Сообщения: 2
Репутация: +  0  -
Профиль   Отправить e-mail  

Строка неправильно воспринимается

Спасибо, вроде работает.

Отредактировано pkroot4 (Ноя. 5, 2016 07:59:13)

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version