大量のファイルをコマンドで処理するスクリプトを書くとき、シェルスクリプトですべてを書くのはしんどいので Python で書きたい。
そういうとき、処理を実行するような python スクリプトを書く代わりに、「処理を実行する(bash などの)スクリプト」を吐く python スクリプトを書くという方法を取っている

ffmpeg を実行したいときに、直接 ffmpeg を subcommand で呼ぶのではなく print('ffmpeg -i ...') のようにする

利点

  • 実行前にスクリプトが正しいかどうか目で確認できる
    • できたシェルスクリプトに間違いがあれば何度でも再実行できる
  • シェルコマンドを間違いなくそのまま実行できる
    • subcommand とかの挙動に悩まされる必要がない
  • シェルスクリプトにある資産をそのまま活用できる
    • 例えば、生成されたものはただのシェルスクリプトなので、parallel などの並列実行コマンドを使うことができる

注意

shlex.quote() をつかってパスを安全にすること