13

次のジェネレーターを使用して、移動平均を計算しています。

import itertools
from collections import deque
    def moving_average(iterable, n=50):
    it = iter(iterable)
    d = deque(itertools.islice(it, n-1))
    d.appendleft(0)
    s = sum(d)
    for elem in it:
        s += elem - d.popleft()
        d.append(elem)
        yield s / float(n)

ジェネレーターの出力を印刷できますが、その出力をテキスト ファイルに保存する方法がわかりません。

x = (1,2,2,4,1,3)
avg = moving_average(x,2)
for value in avg:
    print value

ファイルに書き込むように印刷行を変更すると、出力が画面に出力され、ファイルが作成されますが、空のままです。

前もって感謝します。

4

1 に答える 1

20
def generator(howmany):
    for x in xrange(howmany):
        yield x

g = generator(10)

with open('output.txt', 'w') as f:
    for x in g:
        f.write(str(x))

with open('output.txt', 'r') as f:
    print f.readlines()

出力:

>>> 
['0123456789']
于 2013-08-31T21:03:02.340 に答える