【问题标题】:Python: How do I save generator output into text file?Python:如何将生成器输出保存到文本文件中?
【发布时间】:2013-09-04 08:31:14
【问题描述】:

我正在使用以下生成器来计算移动平均线:

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

当我将打印行更改为写入文件时,输出会打印到屏幕上,创建了一个文件但它保持为空。

提前致谢。

【问题讨论】:

标签: python printing save generator


【解决方案1】:
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']

【讨论】:

  • 谢谢!我只需要将生成器输出更改为字符串即可写入文本文件。我想保持列格式的数字,所以我添加了一个行尾:f.write(str(x)+'\n')。
  • 如果您需要准确地从生成器输出中写入字符串,您可以使用f.writelines(g)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-09-21
  • 2023-03-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多