最近、サブプロセスがos.systemよりはるかに優れていると言っているスタックオーバーフローに関する記事がいくつか出てきましたが、正確な利点を見つけるのは難しいです。os.system上のサブプロセスのメリット
私はに実行したことのいくつかの例:「サブプロセスモジュールは、新しいプロセスを生成し、その結果を取得するためのより強力な機能を提供し、そのモジュールを使用すると、この機能を使用することが好ましい。」 https://docs.python.org/3/library/os.html#os.system
どのようにしてより強力なアイデアはありませんが、私はサブプロセスを使用する方が多くの点でより簡単だと思いますが、実際にはもっと強力です。
別の例は次のとおりです。
https://stackoverflow.com/a/89243/3339122
サブプロセスVSシステムの利点は、それが「本当の」ステータスコード、標準エラー出力(あなたが標準出力を得ることができ、より柔軟であるということです、エラー処理の改善など)。
この投稿は2600+票を持っています。エラー処理や実際の状態コードの意味合いが何であるかについては、これ以上調べることができませんでした。その記事に
トップのコメントは以下のとおりです。あなたも迅速/汚い/一回os.system使用したい理由
は見ることができません。サブプロセスはずっと良いようです。
繰り返しますが、私はそれはいくつかの物事が少し容易になります理解が、私はほとんど、たとえば理由を理解することはできません。
subprocess.call("netsh interface set interface \"Wi-Fi\" enable", shell=True)
は
os.system("netsh interface set interface \"Wi-Fi\" enabled")
よりも良くあり、誰もがいくつかの理由にそれを説明することができますはるかに良いですか?
あなたは 'subprocess.call'の使い方が間違っているので、明らかにAPIを調べていません。 APIドキュメントを読んで、高度なユースケースの例を見てください。 –
@JonathonReinhartちょうど記録のために。実際には、shell = Trueの有無にかかわらずうまく動作します。私は確かにドキュメントを読んでいます。なぜ私のコードが動作しているのか、それともなぜ動作していないのかは疑問ではありません。私はあなたが望む場合は、例を更新することができます、質問はまだそれらの違いです。あなたが結論にジャンプしたり、他の研究をする前に、https://stackoverflow.com/questions/3172470/actual-meaning-of-shell-true-in-subprocessを参照してください。私はコードがどのように動作するのか知っていますが、なぜ私が何か他のものを使っているのか分かりません。 – Lain
これは、ウィンドウの実装のいくつかの奇妙なアーティファクトでなければなりません。 1つのOSで "動作する"という意味では、それが正しく使用されているわけではありません。 –