python でlinux コマンドを起動 — subprocessでパイプ、リダイレクトがある場合


python でlinux コマンドを起動させる際の質問が2つあります。  
2つめです。

subprocess モジュールのsubprocess.check_call()を用いる際に  
複数のコマンドをパイプで接続したり、リダイレクトしたり  
することはできますか?

実行したいことは、例えば

[code]

    nkf -wLu file1 > file2
    
[/code]

のようなことをsubprocess.check_call()で実現したいということです。  
今のところ、仕方ないので

[code]

    #! /usr/bin/sh
    nkf -wLu $1 > $2
    
[/code]

のようなシェルスクリプトsample.sh を作り、

[code]

    subprocess.check_call(['sample.sh', file1, file2])
    
[/code]

のような形で実現しています。  
とはいえ、もっとスマートな方法があればと思い、質問させていただきました。

環境  
OS: CentOS Linux release 7.5.1804 (Core)  
Python: Python 3.6.5



[code]

    with open(file2, "w") as f:
        subprocess.check_call(['nkf', '-wLu', file1], stdout=f)
    
[/code]

なお、パイプで接続したい場合は、公式ドキュメント「subprocess ---
サブプロセス管理」のページの[「シェルのパイプラインを置き換える」](https://docs.python.org/ja/3.7/library/subprocess.html#replacing-
shell-pipeline)の項を参考にしてしてください。



[code]

    with open(file2, "w") as f:
        subprocess.check_call(['nkf', '-wLu', file1], stdout=f)
    
[/code]

なお、パイプで接続したい場合は、公式ドキュメント「subprocess ---
サブプロセス管理」のページの[「シェルのパイプラインを置き換える」](https://docs.python.org/ja/3.7/library/subprocess.html#replacing-
shell-pipeline)の項を参考にしてしてください。

