Python での Bash コマンドの実行
サーバー上の Python スクリプト内で Bash コマンドを実行すると、同じコードであってもエラーが発生する場合がありますローカルで動作します。この一般的な理由の 1 つは、オペレーティング システムによって Bash が呼び出されるさまざまな方法にあります。
Bash について
Python では、subprocess モジュールを使用して Bash コマンドを実行できます。ただし、デフォルトの動作では /bin/sh が使用されます。これは、Bash のすべての機能をサポートするわけではない最小限のシェルです。 Bash 固有の構文が必要な場合は、次のように Bash 実行可能ファイルを明示的に指定する必要があります。
subprocess.run(command, shell=True, executable='/bin/bash')
シェルとシェルなし
subprocess.run( を呼び出すことができます) )shell=True またはshell=False を指定します。 shell=True を指定すると、シェルが解析する単一の文字列コマンドを指定できます。 shell=False を使用すると、シェルを使用せずに文字列引数のリストを実行可能ファイルに渡します。
shell=False を使用すると、シェルの機能が回避されますが、コマンドを引数に正確に解析する必要があります。 shlex.split() 関数はこれを支援します。
subprocess.run(shlex.split(command)) # shell=False
テキスト デコード
デフォルトでは、サブプロセス出力はバイトとして提供されます。 Unicode 文字列にデコードするには、text=True を使用します。
subprocess.run(command, shell=True, text=True)
トラブルシューティング
それでもエラーが発生する場合は、以下を確認することが重要です。
以上がBash コマンドがサーバー上の Python では失敗するのに、ローカルでは機能するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。