如何实时将值写入 CSV 并与时间同步 Python

How to write values to CSV in real time while sync it with time in Python

我遇到了一个我无法解决的挑战。下面的代码连续生成数据。但是,我想把条件放在“y”的值上。也就是说,我想把这段代码和电脑的时间同步。我设置了变量“current_hour”。

但问题是我会有多个条件。当我第一次 运行 代码时,它进入正确的条件并写入所需的 y 值。 虽然代码是 运行ning,但我更改了本地计算机的时间,但 y 的值没有改变。 当我停止脚本并再次 运行 时在机器上的不同时间,它会进入正确的状态。目的是当我的计算机时间发生变化时,我希望条件(在这种情况下为 y 的值)发生变化(在代码为 运行ning 时实时变化。我不想停下来重新运行 代码)。这听起来很简单,也许确实如此。但我无法解决这个问题。如果在脚本 运行ning 时无法将值与时间同步,那么我正在做的项目就没有意义。 我假设当我第一次 运行 代码时,它会检查条件并进入该条件并继续生成值,在这种情况下,我需要在生成每个值之前检查每个条件。

import csv
import random
import time
import datetime
current_hour = datetime.datetime.now().hour
x_value = 0
y_value = 0
fieldnames = ["x_value", "y_value"]
while True: 
    with open('data.csv', 'a') as csv_file:
        csv_writer = csv.DictWriter(csv_file, fieldnames=fieldnames)

        info = {
            "x_value": x_value,
            "y_value": y_value,

        }

        csv_writer.writerow(info)
        print(x_value, y_value)
        y_value = 30
        x_value += 1

        time.sleep(1)

首先,你设置了current_hour之后从来没有使用过,所以我不知道你说的“第一次正确”是什么意思

其次,这不是编程(至少是程序)的工作方式。

在循环中执行的唯一代码是在 while 循环内。如果要使用当前时间,请将其设置为循环内的查询时间。

否则没有变化。变量就像盒子,一旦你把东西放进盒子里,它就不会改变,除非你明确告诉它。

在这种情况下,在 while 循环中移动 current_hour=... 行,并实际引用该变量,而不是使用一些神秘的 y_value 变量,该变量在开始时设置为 0,然后在循环的每个 运行 中达到 30。