更新: の代わりにsubprocess.Popen
を使用すると、問題は解決します。そして、別の問題が出てきました。出力を制御する方法が見つからないようです... subprocess.call
の出力をそのような文字列にリダイレクトする方法はありますか?ありがとう!"Debug | Win32"の設定でDevenvを実行するPythonスクリプトを書くと、何もしません
私はプロジェクトをビルドするためにDevenv
を使用しようとしている、と私はdevenv A.sln /build "Debug|Win32"
のようなコマンドプロンプトに入力したときに、それがうまく動作します - が、私はcmd
は上記と同じラインであるところPopen(cmd,shell=true)
を使用してそれを実行するのpythonを使用する場合何も表示されません。 |
を削除した場合は、"Debug"
に変更してください。
これはなぜ起こるのですか?私は\
前|
を入れて試してみたが、それでも何も起こらなかった。これは私が使用していたコードである
:
from subprocess import Popen, PIPE
cmd = ' "C:\\Program Files\\Microsoft Visual Studio 8\\Common7\\IDE\\devenv" solution.sln /build "Debug|Win32" '
sys.stdout.flush()
p = Popen(cmd,shell=True,stdout=PIPE,stderr=PIPE)
lines = []
for line in p.stdout.readlines():
lines.append(line)
out = string.join(lines)
print out
if out.strip():
print out.strip('\n')
sys.stdout.flush()
私はDebug|Win32
を入れ替える場合は、しかし、動作しません... Debug
と、それは完璧に動作します..ここですべてのコメントを
おかげ
私の頭の中にポップアップしたちょっとした酔いどれ、ポピンはあなたが使ったか、あなたはインポートステートメントを表示できますか? –
確かに、それはです: サブプロセスの輸入popenの、PIPE P = popenの(CMD、シェル= Trueの場合、STDOUT = PIPE、標準エラー出力= PIPE) cmdは「のようなものである "..(パス)/ devenvを" 溶液から/ビルド "デバッグ| Win32" ... それはようです| signはコマンド全体を無視します... –
私は、 'devenv.com'コマンド全体を含んでいるPythonのコンパイル時にcompile.batファイルを作成し、' popen'を使ってPythonからcompile.batを実行すると、それが魅力的であることを発見しました。 –