【问题标题】:print X items from list at scheduled time intervals以预定的时间间隔从列表中打印 X 项
【发布时间】:2021-03-04 00:35:26
【问题描述】:

我有一个包含一些数据(名称、地址)的 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 设置为零,有没有更好的方法来做到这一点?

【问题讨论】:

  • 也许将此函数包装在一个类中?或者如果您的代码很简单,请使用全局变量?

标签: python arrays scheduled-tasks


【解决方案1】:

你可以像这样将这个函数包装在一个类中:

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)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-03
    • 1970-01-01
    • 2020-06-01
    相关资源
    最近更新 更多