【问题标题】:Is there anyway to update values in a JSON file after a certain interval of time?无论如何,在一定的时间间隔后更新 JSON 文件中的值吗?
【发布时间】:2022-02-16 09:02:22
【问题描述】:

假设我有一个包含多个值的 json 文件:

{
    "google":5,
    "apple":4,
    "msft":3,
    "amazon":6
}

有什么方法可以在一定的时间间隔后更新文件中的每个单独的值?例如,我可以将 Google 值从 5 更改为 6,然后每分钟更改为 7,以此类推。

【问题讨论】:

  • 为什么 JSON 文件与任何其他类型的文件会有所不同?你已经知道哪些部分?你知道如何写一个JSON文件once吗?如果你这样做了,你知道如何安排一个函数每 30 分钟调用一次吗? (如果没有,您是否查找过描述如何操作的现有问答条目?)
  • 理想情况下,问题不在于您作为总体目标要完成什么,而在于您在哪里卡住了。阻碍您自己实现此功能的具体技术问题是什么?
  • 我想这真的没关系,但我专门练习使用 JSON 文件,我想知道我应该如何进行。回应第一条评论。
  • call a function every x minutes; how to write a new dictionary to a json file - 只是许多相关的预先存在的问题中的两个和答案。自己尝试一些事情,使用这些和其他现有问题的答案,然后您可以在遇到困难后提出更具体的问题。
  • 除了@CharlesDuffy 还有一个asynchronous 方法可以做到这一点,所以你不会因为等待而阻塞整个脚本

标签: python json python-3.6


【解决方案1】:

使用time.sleep(),您可以做到这一点。 time.sleep() 将您的代码延迟您指定的秒数,允许使用小数。如果你把它放在不同的线程中,你可以在这种情况下执行代码。这是线程版本的一些代码,但您可以通过调用 updatedict() 来删除线程

import json
from time import sleep
import threading

values = {
    "google":5,
    "apple":4,
    "msft":3,
    "amazon":6
}
def updatedict():
    while True:
        global values
        #incrementing values
        for value in values:
            values[value] += 1
        #Writing file
        with open("values.json","w+") as f:
            f.write(json.dumps(values))
        #Sleeping 1 minute
        sleep(60)
#Starting new thread
threading.Thread(target=updatedict).start()
#Any code you wish to run at the same time as the above function

如果您打算多次运行脚本,每次递增到已经存在的内容,请将现有的 values 变量赋值替换为

try:
    with open("values.json") as f:
        values = json.load(f)
#If the file is not found, regenerates values
except FileNotFoundError:
    values = {
    "google":5,
    "apple":4,
    "msft":3,
    "amazon":6
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-11-07
    • 1970-01-01
    • 2015-05-30
    • 2021-02-15
    • 2017-05-10
    • 2017-09-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多