Mam skrypt Pythona o nazwie class.py z jednej linii:subprocess.stdout zachowuje się inaczej ze shell = True i Shell = False
class.py:
print "Hello World"
go uruchomić w podproces , lubię to.
run_subprocess.py:
import subprocess
p = subprocess.Popen(["python", "class.py"], stdin=subprocess.PIPE, shell=True,
stdout=subprocess.PIPE)
a = p.communicate()
print a
Kiedy uruchomić ten (na komputerze Mac), dostaję pusty ciąg poleceń:
$ python run_subprocess.py
('', None)
Kiedy uruchamiam to z powłoki = False, otrzymuję zawartość stdout:
run_subprocess.py:
import subprocess
p = subprocess.Popen(["python", "class.py"], stdin=subprocess.PIPE, shell=False,
stdout=subprocess.PIPE)
a = p.communicate()
print a
$ python run_subprocess.py
('hello world\n', None)
Dlaczego? Jak mogę uzyskać zawartość stdout
podczas wykonywania podprocesu z shell=True
?
Dzięki Kevin