/ / Output da sottoprocesso non salvato - python, riga di comando, sottoprocesso

Output da sottoprocesso non salvato - python, riga di comando, sottoprocesso

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