以预定的时间间隔从列表中打印 X 项

print X items from list at scheduled time intervals

我有一个包含一些数据(姓名、地址)的 json 数组,我想每五分钟打印一个姓名:到目前为止我已经得到了这个:

def get_data(i):
    f = open('data.json' , 'r')
    infos = json.load(f)
    name = infos['people'][i]['name']
    print(name)
    i+=1
schedule.every(5).minutes.do(get_data, i=0)

while True:
    schedule.run_pending()
    time.sleep(1)

但这显然不起作用,因为每次 get_data 被调用时我都将 i 设置为零,有没有更好的方法来做到这一点?

您可以像这样将此函数包装在 class 中:

import schedule
import json
import time


class Run:
    def __init__(self):
        self.i = 0

    def get_data(self):
        with open('data.json') as f:
            infos = json.load(f)

        try:
            name = infos['people'][self.i]['name']
            print(name)
        except IndexError:
            print('No name for index:', self.i)
        else:
            self.i += 1


if __name__ == '__main__':
    run = Run()
    schedule.every(5).minutes.do(Run.get_data, run)

    while True:
        schedule.run_pending()
        time.sleep(1)