0
import os, subprocess
p = subprocess.Popen("cmd.exe", stdout=subprocess.PIPE, stderr=subprocess.PIPE, stdin=subprocess.PIPE)
print>>p.stdin, "echo hi"
p.stdout.readline()
p.stdout.readline()
p.stdout.readline()
p.stdout.readline()
p.stdout.readline()
p.stdout.readline()
print>>p.stdin, "python"
p.stdout.readline()

さて、もしそうならp.stdout.readline()、なぜPythonシェルが表示されないのですか?

一方、の代わりに、サブプロセスからpython別のプロセスを開始した場合cmdは、新しいcmdシェルが生成されているのを確認できます。

import os, subprocess
p = subprocess.Popen("cmd.exe", stdout=subprocess.PIPE, stderr=subprocess.PIPE, stdin=subprocess.PIPE)
print>>p.stdin, "echo hi"
p.stdout.readline()
p.stdout.readline()
p.stdout.readline()
p.stdout.readline()
p.stdout.readline()
p.stdout.readline()
print>>p.stdin, "cmd"
p.stdout.readline()
p.stdout.readline()
p.stdout.readline()

違いは何ですか?

4

1 に答える 1

0

Pythonは、標準出力が端末デバイスでない場合、動作が異なります。プロンプトもバナーもありません。完全なスクリプトを読み取って実行するだけです。

それがどのようにWindowsに移植されたかは正確にはわかりませんが、「コンソールハンドル」は彼らが持っている「端末デバイス」に近いものです。

于 2013-01-19T15:25:07.430 に答える