Gewusst wie: ausführen eine Eingabeaufforderung Befehl von python
Habe ich versucht, etwas wie dieses, aber ohne Wirkung:
command = "cmd.exe"
proc = subprocess.Popen(command, stdin = subprocess.PIPE, stdout = subprocess.PIPE)
proc.stdin.write("dir c:\\")
InformationsquelleAutor der Frage Kobe | 2011-03-30
Du musst angemeldet sein, um einen Kommentar abzugeben.
Werden Sie wahrscheinlich wollen, um zu versuchen, so etwas wie dieses:
command = "cmd.exe /C dir C:\\"
Ich glaube nicht, Sie können über die Pipeline in
cmd.exe
... Wenn Sie kommen aus einem unix-hintergrund-gut,cmd.exe
hat einige hässliche Warzen!EDIT: Nach Sven Marnach, Sie kann Rohr
cmd.exe
. Ich habe versucht, nach einer python-shell:Wie Sie sehen können, Sie haben noch ein wenig Arbeit zu tun (nur die erste Zeile zurückgegeben wird), aber vielleicht sind Sie in der Lage, diese zu arbeiten...
InformationsquelleAutor der Antwort Daren Thomas
wie einfach:
InformationsquelleAutor der Antwort rmflow
Versuchen Sie, einen Anruf zu
proc.stdin.flush()
nach dem schreiben in die pipe und sehen, ob sich die Dinge Verhalten sich mehr als Sie erwarten. Ausdrücklich das Spülen der Leitung bedeutet, dass Sie nicht brauchen, um über genau, wie die Pufferung eingestellt ist.Auch, vergessen Sie nicht, eine
"\n"
am Ende des Befehls oder Ihr Kind-shell wird dort sitzen Sie an der Eingabeaufforderung warten auf Beendigung des Befehls Eintrag.Schrieb ich über die Verwendung Popen zu manipulieren, eine externe shell-Instanz im detail auf: Ausführung von drei Befehlen im gleichen Prozess mit Python
Da war der Fall in dieser Frage, dieser trick kann nützlich sein, wenn Sie halten müssen, um shell-Zustand über mehrere out-of-process-Aufrufe auf einem Windows-Rechner.
InformationsquelleAutor der Antwort ncoghlan
Versuchen:
InformationsquelleAutor der Antwort vezon122
Warum Sie anrufen möchten
cmd.exe
?cmd.exe
ist eine Befehlszeile (shell). Wenn Sie möchten, ändern Sie das Verzeichnis, verwenden Sieos.chdir("C:\\")
. Versuchen Sie nicht, den Aufruf von externen Kommandos, wenn Python die es bieten kann. In der Tat, die meisten Befehle des Betriebssystems sind über dieos
Modul (und sys). Ich schlage vor, Sie nehmen einen Blick aufos
Modul-Dokumentation zu sehen, die verschiedene Methoden zur Verfügung.InformationsquelleAutor der Antwort kurumi