[Python] print の出力を文字列で取得する

デバッグの時なんかに print の出力内容を、そのまま文字列として取得したかったので方法を調べました。

環境

  • Python 3.4.2

コード

import io
import sys

f = io.StringIO('')
sys.stdout = f
print('-----------------')

s = 'string'
print('文字列', s)

l = ['listVar1', 'listVar2', 'listVar3']
print('リスト', l)

d = {'key1': 'dictVar1', 'key2': 'dictVar2'}
print('辞書', d)

print('モジュール', io)

print('オブジェクト', f)

print('-----------------')

sys.stdout = sys.__stdout__
print('=====================')
f.seek(0)
print(f.read())
print('=====================')
f.close()

出力例

=====================
-----------------
文字列 string
リスト ['listVar1', 'listVar2', 'listVar3']
辞書 {'key1': 'dictVar1', 'key2': 'dictVar2'}
モジュール <module 'io' from 'C:\\Python34\\lib\\io.py'>
オブジェクト <_io.StringIO object at 0x01F18B20>
-----------------

=====================

参考

Trackbacks & Pingbacks

  • None

Comments

  • No Comment
Name
Mail(任意) 公開されません
Web Site(任意)
Comment

日本語が含まれない投稿は無視されますのでご注意ください