-1
どのようにして、exec()コマンドにpythonコマンドを渡し、完了を待って、今起こったすべての出力を出力するようにしますか?exec()関数の出力をpython 3.5でどのように出力するのですか?
多くのコードは、Python 3.5に含まれていないStringIOを使用しています。
どのようにして、exec()コマンドにpythonコマンドを渡し、完了を待って、今起こったすべての出力を出力するようにしますか?exec()関数の出力をpython 3.5でどのように出力するのですか?
多くのコードは、Python 3.5に含まれていないStringIOを使用しています。
できません。 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'
$
[StringIOをはPython 3.5に含まれている](https://docs.python.org/3.5/library/ io.html#io.StringIO) – Taywee