pythonでLinuxコマンドを実行する
Linuxでlsとかmkdirがしたくてちょっと調べてみた.
色々方法はあるらしいがsubprocessを使うのが良さそうだった.
#!/usr/bin/env python # -*- coding: utf-8 -*- import subprocess p0 = subprocess.check_call(['ls','-al']) p1 = subprocess.check_call(['mkdir','test'])
ついでにC言語を実行できるか確かめてみた.
test.c
#include <stdio.h> int main(void){ int a; while(1){ scanf("%d",&a); if(a == 0){ return 0; } printf("%d\n",a); } return 0; }
これを実行するには
#!/usr/bin/env python # -*- coding: utf-8 -*- import subprocess p0 = subprocess.check_call(['gcc','test.c','-o','test']) p1 = subprocess.Popen(['./test'], stdout=subprocess.PIPE,stdin=subprocess.PIPE) p2 = subprocess.Popen(['echo','-1'], stdin=subprocess.PIPE, stdout=p1.stdin) p2 = subprocess.Popen(['echo','5'], stdin=subprocess.PIPE, stdout=p1.stdin) p2 = subprocess.Popen(['echo','0'], stdin=subprocess.PIPE, stdout=p1.stdin) output = p1.communicate()[0] print output
実行ファイルを実行するプロセスを作成した後,実行ファイルのプロセスの入力にp2で作成したプロセスの出力をつなげればOK