Quando uso stdout nel mio Popen con stdin il mio processo non funziona.
def program():
p = subprocess.Popen(link, shell=True, stdin=subprocess.PIPE, stderr=subprocess.STDOUT)
out = p.communicate(longquery)
print out
Quando eseguo questo, il mio out viene visualizzato come (None, None) anche se ho un output che appare sulla console. Perché sta succedendo questo e come posso salvare l'output che sta uscendo?
risposte:
1 per risposta № 1È necessario reindirizzare i dati di output per il manuale:
"per ottenere qualcosa di diverso da None nella tupla del risultato, è necessario fornire stdout = PIPE e / o stderr = PIPE."
def program():
p = subprocess.Popen(link, shell=True, stdin=subprocess.PIPE, stderr=subprocess.PIPE, stdout=subprocess.PIPE)
out = p.communicate(longquery)
print out
0 per risposta № 2
È necessario impostare stdout=PIPE
anche.
Cambia il tuo codice in:
from subprocess import Popen, PIPE, STDOUT
def program():
p = Popen(link, shell=True, stdin=PIPE, stderr=STDOUT, stdout=PIPE)
out = p.communicate(longquery)
print out