Python:打印While循环数据设置为文件

时间:2015-07-26 19:31:02

标签: python json stdout

我正在尝试获取传感器数据并通过JSON将其绘制成图形。 我想读取前100个传感器值并创建一个文件,在100之后,我想用101替换第1个,用102等替换第2个,以便文件不断显示最新的100行。

假设我每隔3秒就有一个随机数据流进入标准输出,例如此..

from random import randint
import time

def loop():
        print(randint(100,200))

while True:
        loop()
        time.sleep(3)

如何捕获100行输出,并将此数据写入文件?

理想情况下,每次ping新数据都应该替换该文件。 谢谢你的帮助!

2 个答案:

答案 0 :(得分:0)

原油解决方案:

from random import randint
import time

def loop():
    return randint(100,200)

def save_lst(lst):
    with open("mon_fich", "w") as f:
        f.write(", ".join(lst))

lst = list()
while True:
        lst.append(str(loop()))
        if len(lst)>=100:
            save_lst(lst)
            lst = list()
        time.sleep(0.001)

答案 1 :(得分:0)

如何保持计数器变量,并在每次达到100(模100)时将其重置为0。此变量可用作写入文件的索引:

i = 0
while True:
    write_file(i, loop(), filename)
    i += 1
    i = i % 100    

def write_file(line, input, filename):
    with open(filename, 'r') as f:
        lines = f.readlines()
    lines[line] = input   # <=== Replace the nth line with current input 
    with open(filename, 'w') as f:
        f.writelines(lines)
    out.close()