Найти - Пользователи
Полная версия: Строка неправильно воспринимается
Начало » Python для новичков » Строка неправильно воспринимается
1
pkroot4
У меня есть два файла с исходным кодом:

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

Не могу понять из-за чего это происходит. Строка воспринимается как-то не так что ли. Естественно если тест руками запустить то все будет работать.
scidam
Думаю shell=True нужно убрать. Ну и printы лучше пока заменить на “print( c ) ”
pkroot4
Спасибо, вроде работает.
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