PythonからC言語を実行して、標準出力(実行結果)をPython側で使う。
PythonからC言語を実行して、標準出力(実行結果)をPython側で使います。
以下、ソース。
main.py
# -*- encoding: utf8 -*- import subprocess import os def main(): c_file = 'hogehoge.c' df = lambda s: '%d,' % s values = range(0, 20, 2) array_str = '{ %s }' % (' '.join(map(df, values)))[:-1] test_c_format = """ #include<stdio.h> int main() { int n = %d; int s_size[] = %s; int i; for (i = 0; i < n; i++) { printf("%%d\\n", s_size[i]); } } """ with open(c_file, 'w') as f: f.write(test_c_format % (len(values), array_str)) os.system("gcc %s" % c_file) result = subprocess.Popen('./a.out', stdout=subprocess.PIPE).communicate()[0] for i, v in enumerate(result[:-1].split('\n')): print i, v if __name__ == '__main__': main()
生成ファイル(hogehoge.c)
#include<stdio.h> int main() { int n = 10; int s_size[] = { 0, 2, 4, 6, 8, 10, 12, 14, 16, 18 }; int i; for (i = 0; i < n; i++) { printf("%d\n", s_size[i]); } }
実行結果
$python main.py 0 0 1 2 2 4 3 6 4 8 5 10 6 12 7 14 8 16 9 18