pprint globals() を使用して変数情報を受け取り、ファイルに書き込むログ ファイルを作成しようとしています。しかし、私は多くのループを使用する必要があるため、以下に示すコードのログ ファイルの最後に、各ループ中にすべての pprint globals() 出力を配置する方法はありますか?
import numpy as np
from pprint import pprint
A = np.array([1, 2, 3, 4])
f = open("log.txt", 'w')
n = 3
for i in range(n):
f.write(u'\u27A4 - %s\n'.encode('utf-8') % str(i))
A = A + 1
f.writelines(list(u' \u27B3 - %s\n'.encode('utf-8') % i for i in A))
pprint(globals(), f)
f.close()
出力
➤ - 0
➳ - 2
➳ - 3
➳ - 4
➳ - 5
{'A': array([2, 3, 4, 5]),
'__builtins__': <module '__builtin__' (built-in)>,
'__doc__': None,
'__file__': '~/Stack exchange/pprint_global.py',
'__name__': '__main__',
'__package__': None,
'f': <open file 'log.txt', mode 'w' at 0xb66588b8>,
'i': 0,
'n': 2,
'np': <module 'numpy' from '/usr/lib/python2.7/dist-packages/numpy/__init__.pyc'>,
'pprint': <function pprint at 0xb6e2748c>}
➤ - 1
➳ - 3
➳ - 4
➳ - 5
➳ - 6
{'A': array([3, 4, 5, 6]),
'__builtins__': <module '__builtin__' (built-in)>,
'__doc__': None,
'__file__': '~/Stack exchange/pprint_global.py',
'__name__': '__main__',
'__package__': None,
'f': <open file 'log.txt', mode 'w' at 0xb66588b8>,
'i': 1,
'n': 2,
'np': <module 'numpy' from '/usr/lib/python2.7/dist-packages/numpy/__init__.pyc'>,
'pprint': <function pprint at 0xb6e2748c>}
望ましい出力
➤ - 0
➳ - 2
➳ - 3
➳ - 4
➳ - 5
➤ - 1
➳ - 3
➳ - 4
➳ - 5
➳ - 6
{'A': array([2, 3, 4, 5]),
'__builtins__': <module '__builtin__' (built-in)>,
'__doc__': None,
'__file__': '~/Stack exchange/pprint_global.py',
'__name__': '__main__',
'__package__': None,
'f': <open file 'log.txt', mode 'w' at 0xb66588b8>,
'i': 0,
'n': 2,
'np': <module 'numpy' from '/usr/lib/python2.7/dist-packages/numpy/__init__.pyc'>,
'pprint': <function pprint at 0xb6e2748c>}
{'A': array([3, 4, 5, 6]),
'__builtins__': <module '__builtin__' (built-in)>,
'__doc__': None,
'__file__': '~/Stack exchange/pprint_global.py',
'__name__': '__main__',
'__package__': None,
'f': <open file 'log.txt', mode 'w' at 0xb66588b8>,
'i': 1,
'n': 2,
'np': <module 'numpy' from '/usr/lib/python2.7/dist-packages/numpy/__init__.pyc'>,
'pprint': <function pprint at 0xb6e2748c>}
第一印象は、コードの最後に pprint コマンドを配置することですが、これでは各ループ中に変数情報が得られません。ループの最後でのみ値が得られます。要するに、ログ ファイルの最後に書き込まれる各ループ (別の write log コマンドがある) で変数情報が必要です。