0

LinuxPython スクリプトを使用して、さまざまなコマンド/操作を実行したいと考えています。出力を使用して検証/処理し、スクリプトでさらにいくつかのコマンドの実行を続行します。リモートで実行することもあります。

ossubprocessモジュールの両方を試しました。ここでの注意点は、両方を組み合わせることができないということです。つまり、1 つのモジュールから実行されたシステム コールまたはコマンドは、その特定のモジュールによってのみ考慮されるのではなく、"program/python" 環境変数に影響を与えません。

為に。元。

os.chdir(dirname)
os.system(cmd)
# p = subprocess.Popen(cmd)

さて、ここからの変更os.chdirはサブプロセス呼び出しには役に立ちません。私たちはそれらのいずれかに固執する必要があります。を使用する場合subprocess、シェルコマンドを渡す/作成する必要があります。


追加: cwd=は解決策ですsubprocess.Popenが、将来のコマンドに引数としてオプションを渡す必要があるたびにcwd、それらをすべてそのディレクトリから実行する必要がある場合


これらのモジュールの両方を一緒に使用できるより良い方法はありますか?

または

コマンドの実行に使用できる他の優れたモジュールはありますか。

また、これら両方のモジュールの「長所と短所/注意事項」を知りたいです。

4

1 に答える 1

2

os.system/bin/shコマンド文字列を解析する常に実行されます。コマンド引数に空白$などがある場合、またはユーザーがシェル構成ファイルを持っている場合、これはセキュリティ上のリスクになる可能性があります。このようなリスクをすべて回避するには、代わりにsubprocessコマンド ( ) として文字列のリストまたはタプルを使用しshell=Falseます。

コマンドでエミュレートするには、 の引数をos.chdir使用します。cwd=subprocess

于 2013-09-27T12:14:55.930 に答える