<Python> subprocess.check_outputは古いらしい。。。
python
さんから、うにっくすこまんどunix command
を呼び出すモジュールsubprocess.check_output
はもう古いらしい。
マニュアル
17.5. subprocess — サブプロセス管理 — Python 3.5.1 ドキュメント
今は、subprocess.Popen()
らしい。
エラー処理とあわせた記述例(16/3/19 ちと修正)、、、
env = os.environ.copy() env['PATH'] = '{}:{}'.format('/home/hage', env['PATH']) cmd = "ps -a | sed '/ /,/g'" p = subprocess.Popen(cmd, shell=True, env=env, stdout=subprocess.PIPE, stderr=subprocess.PIPE, universal_newlines=True) stdout, stderr = p.communicate() if stderr == '': if stdout == '': print('Nothing returned', file=sys.stderr) sys.exit(2) elif stdout == '\n': print('Nothing returned except \\n', file=sys.stderr) sys.exit(2) else: df = pd.read_csv(io.StringIO(stdout)) else: print('{}'.format(stderr), file=sys.stderr) sys.exit(2)
にゃるほどね。。。
あと、print
で標準エラー出力stdout
に出す方法。
print('hage', file=sys.stderr)
Stack overflow
16/3/19追加
自分で作ったコマンドとかは、環境変数environment variables
でパスを渡してあげないと、フルパスfull path
渡すことになる。
渡すには、
subprocess(env={'PATH': '/home/hage'})