如何使用f.write将整数变量写入日志文件?

时间:2019-01-06 19:04:47

标签: python

此脚本是True循环中的一个简单操作,用于检查电压值并写入日志文件。但是,我无法将电压值写入日志。

带有文本字符串和日期/时间戳的简单日志文件可以正常工作,但是当我尝试使用变量名时,写入操作失败。

ina3221 = SDL_Pi_INA3221.SDL_Pi_INA3221(addr=0x40)

LIPO_BATTERY_CHANNEL = 1

busvoltage1 = ina3221.getBusVoltage_V(LIPO_BATTERY_CHANNEL)

while True:

    if busvoltage1 <= 3.70:

        with open("/<path>/voltagecheck.log", "a") as f:
                f.write("battery voltage below threshold: " + busvoltage1 + "\n")
                f.write("timestamp: " + time.asctime() + "\n")
                f.write("-------------------------------------------" + "\n")
                f.close()
    else:

        time.sleep(3600)

我也尝试过:

with open("/<path>/voltagecheck.log", "a") as f:
        f.write("battery voltage below threshold: " + str(busvoltage1) + "\n")
        f.write("timestamp: " + time.asctime() + "\n")
        f.write("-------------------------------------------" + "\n")
        f.close()

不尝试将busvoltage1值添加到日志中,将创建日志,并且时间戳记行工作正常。

使用busvoltage1值创建日志,但不写入任何内容。

在终端中运行此命令时,“ str(busvoltage1)”和纯文本“ busvoltage1”的错误是:

ValueError:对已关闭文件的I / O操作

TypeError:无法连接“ str”和“ float”对象

1 个答案:

答案 0 :(得分:0)

在使用f.write之前,值必须格式化为字符串。

添加了v = str(busvoltage1),然后在f.write中引用了vf.write(battery voltage below threshold: " + v + "\n")

在7.2.1的第5个示例中引用了此示例:https://docs.python.org/3/tutorial/inputoutput.html#reading-and-writing-files。谢谢@PatrickArtner