2017-05-27 2 views
0

Ich lese über Subprozess und spielen mit etwas Code herum. Ich verwende Windows 7 mit Python3.6Warum druckt stdout in diesem Fall eine leere Zeichenfolge?

import subprocess 


process = subprocess.Popen(['notepad', 'C:\\Users\Amit\Downloads\InsiderTrades.txt'],stdout=subprocess.PIPE, stderr=subprocess.PIPE) 
#I'm opening a text file which has a list of stock tickers 

stdout1, stderr1 = process.communicate() 
print(stdout1.decode('ASCII')) 

Der Ausgang ich nichts bekommen oder

b'' als Wert für stdout1.

I "m nicht ganz sicher, was communicate in diesem Fall ausgegeben wird. Ich habe den Eindruck, dass es den Text aus meiner Textdatei ausgegeben würde oder es würde Ausgabe alles, was ich in die Textdatei ein.

ich habe versucht, in die neu geöffneten Textdatei eingeben als gut, aber ich bin immer noch die gleiche Leistung erhalten, b''

Also, was soll ich einen leeren String bekommen, trotz etwas in die neu eröffneten Text-Datei eingeben.

+1

Wenn Sie diesen Befehl in einer cmd-Konsole eingeben, wird der Editor geöffnet und nichts ausgedruckt. Das ist das gleiche hier. –

+1

Nicht klar, was Sie erwarten, aber Notepad nimmt nur nicht wirklich seine Eingaben von stdin noch gibt es auf stdout ausgegeben. Es ist ein GUI-Programm. – pvg

Antwort

1

Subprocess ist im Grunde so, als ob Sie diesen Computer ausführen Mand im Terminal.

Also, was Sie tun, läuft notepad some_file.txt , die nur eine Datei im Editor öffnet, aber es nichts an die Standardausgabe sendet.

Wenn Sie einen Befehl ausführen, der etwas in die Standardausgabe schreibt, haben Sie ein nicht leeres stdout1. Versuchen Sie ls zum Beispiel, wenn Sie auf einem * Nix-System oder dir, wenn unter Windows.

+0

Danke für die Klarstellung. Ich werde einen Versuch mit 'dir' machen, da ich auf einem Windows-System bin. – Moondra

+0

Okay. Es scheint mit dir zu funktionieren. Ich glaube, ich beginne zu verstehen, wie Subprozess und Standard und Standard funktionieren. – Moondra

Verwandte Themen