コマンドラインで「>」文字を使用するだけで、Pythonスクリプトの出力をリダイレクトできます。ただし、Pythonスクリプトにsubprocess.call()がある場合、出力行の順序が失われます。
test.py
import subprocess
print("Message from Python... this should appear at 1st line")
subprocess.call(r"c:\src\python\redirect2\hi.bat")
hi.bat
@echo off
echo Message from batch file. this should appear at 2nd line.
以下は私が期待するメッセージです。
C:\src\python\redirect2>\Python34\python.exe test.py
Message from Python... this should appear at 1st line
Message from batch file. this should appear at 2nd line.
ただし、出力をリダイレクトすると、これらの行の順序が入れ替わります。
C:\src\python\redirect2>\Python34\python.exe test.py > console.txt
C:\src\python\redirect2>type console.txt
Message from batch file. this should appear at 2nd line.
Message from Python... this should appear at 1st line
誰かがこれを防ぐ方法を知っていますか?sleep()を置くことは役に立たないようです。私はWindows8.1を使用しています。
代わりにsubprocess.Popenを使用して、出力をキャプチャできるようにする必要があります。
import subprocess
print("Message from Python... this should appear at 1st line")
p = subprocess.Popen("c:\src\python\redirect2\hi.bat", stdout=subprocess.PIPE)
out, err = p.communicate()
print out
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加