首页 > 解决方案 > Python 将布尔变量输出到文件(读取、检查、写入)

问题描述

我是 python 新手。

告诉我如何实现将变量的值保存到文件中,以便在程序重新启动时不会收到不必要的通知。

当状态发生变化时,程序会 ping 服务器并发送消息。当您重新启动程序时,它不会保存其检查的历史记录。这很不舒服。

我希望我正确地解释了这个问题?

我需要不断地将检查结果保存到文件中,并在比较新检查时使用这些数据。

def ping_host(address):

    status = ping_url(address.address)

    if status != address.status:
        send_message(( "! " if status is None else "+ " if status else 
                     "- ") + address.comment)
        address.status = status

此函数检查状态,如果已更改,则发送新消息。

标签: pythonpython-3.x

解决方案


如果您的文件不需要可移植,最简单的解决方案是使用 python pickling。缺点是您不能手动检查文件或修改它以用于调试目的而不是基于文本的保存(例如 ini 文件、json 或简单的 txt)。主要优点是易于使用,因为您可以通过这种方式序列化任何 python 基本类型。

这是一个关于如何使用它的简单示例:

import pickle

def get_status():
    with open('status','rb') as f:
        status = pickle.load(f)
        return status
        
def set_status(status:bool):
    with open('status','wb') as f:
        pickle.dump(status,f)


set_status(True)
s = get_status()
assert s

set_status(False)
s = get_status()
assert not s

推荐阅读