2016-06-13 7 views
-1

どのようにして、exec()コマンドにpythonコマンドを渡し、完了を待って、今起こったすべての出力を出力するようにしますか?exec()関数の出力をpython 3.5でどのように出力するのですか?

多くのコードは、Python 3.5に含まれていないStringIOを使用しています。

+0

[StringIOをはPython 3.5に含まれている](https://docs.python.org/3.5/library/ io.html#io.StringIO) – Taywee

答えて

0

できません。 Exec just executes in place and returns nothing。最善の策は、コマンドをスクリプトに書き込んで、すべての出力を実際にキャッチしたい場合はsubprocessで実行することです。

ここにあなたのための例です:

#!/usr/bin/env python3 

from sys import argv, executable 
from tempfile import NamedTemporaryFile 
from subprocess import check_output 

with NamedTemporaryFile(mode='w') as file: 
    file.write('\n'.join(argv[1:])) 
    file.write('\n') 
    file.flush() 

    output = check_output([executable, file.name]) 

    print('output from command: {}'.format(output)) 

そして、それを実行している:

$ ./catchandrun.py 'print("hello world!")' 
output from command: b'hello world!\n' 
$ 
関連する問題