stdoutのログファイルへの「グローバル」リダイレクトでサブプロセスのリターンコードを取得できません:Fe:
>>> rc = subprocess.call(['ping', '-c1', 'google.com'])
PING google.com (173.194.69.102) 56(84) bytes of data.
64 bytes from bk-in-f102.1e100.net (173.194.69.102): icmp_seq=1 ttl=46 time=86.1 ms
--- google.com ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 86.141/86.141/86.141/0.000 ms
>>> rc
0
rcは0であり、それを使用できますが、実行する場合は次のようになります。
>>> sys.stdout=open('/var/log/test','a')
>>> rc = subprocess.call(['ping', '-c1', 'google.com'])
PING google.com (173.194.69.102) 56(84) bytes of data.
64 bytes from bk-in-f102.1e100.net (173.194.69.102): icmp_seq=1 ttl=46 time=86.9 ms
--- google.com ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 86.947/86.947/86.947/0.000 ms
>>> rc
>>> sys.stdout.flash()
1番目-rcはファイルに移動し、スクリプトは表示されなくなります。だから私はそれを扱うことができません。
2番目-sys.stdout.flash()の後のみ
3番目-pingの結果は、私が行った場合にのみファイルに送られます
rc = subprocess.call(['ping', '-c1', 'google.com'],stdout=sys.stdout)
主な質問は、戻りコードがstdoutファイルにリダイレクトされないようにする方法です。