大量のファイルをコマンドで処理するスクリプトを書くとき、シェルスクリプトですべてを書くのはしんどいので Python で書きたい。
そういうとき、処理を実行するような python スクリプトを書く代わりに、「処理を実行する(bash などの)スクリプト」を吐く python スクリプトを書くという方法を取っている
例
ffmpeg を実行したいときに、直接 ffmpeg を subcommand で呼ぶのではなく print('ffmpeg -i ...') のようにする
利点
- 実行前にスクリプトが正しいかどうか目で確認できる
- できたシェルスクリプトに間違いがあれば何度でも再実行できる
- シェルコマンドを間違いなくそのまま実行できる
- subcommand とかの挙動に悩まされる必要がない
- シェルスクリプトにある資産をそのまま活用できる
- 例えば、生成されたものはただのシェルスクリプトなので、parallel などの並列実行コマンドを使うことができる
注意
shlex.quote() をつかってパスを安全にすること