1. ホーム
  2. python

[解決済み] Pythonでサブプロセスを使って出力をリダイレクトするには?

2022-09-28 11:37:15

質問

コマンドラインで何をすればいいのでしょうか。

cat file1 file2 file3 > myfile

pythonでやりたいこと。

import subprocess, shlex
my_cmd = 'cat file1 file2 file3 > myfile'
args = shlex.split(my_cmd)
subprocess.call(args) # spits the output in the window i call my python program

どのように解決するのですか?

UPDATE: os.system は、Python 3 ではまだ利用可能ですが、推奨されません。


使用方法 os.system :

os.system(my_cmd)

もし本当にサブプロセスを使いたいのであれば、ここに解決策があります(ほとんどはサブプロセスのドキュメントから引用しています)。

p = subprocess.Popen(my_cmd, shell=True)
os.waitpid(p.pid, 0)

逆に、システムコールを完全に回避することも可能です。

import shutil

with open('myfile', 'w') as outfile:
    for infile in ('file1', 'file2', 'file3'):
        shutil.copyfileobj(open(infile), outfile)