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

该函数检查状态,如果状态发生变化,则发送新消息。


汪汪一只猫
浏览 88回答 3
3回答

慕码人2483693

如果您的文件不需要可移植,最简单的解决方案是使用 python pickling。缺点是您无法手动检查文件或出于调试目的修改文件,而不是基于文本的保存(例如 ini 文件、json 或简单的 txt)。主要优点是易于使用,因为您可以通过这种方式序列化任何 python 基本类型。这是一个关于如何使用它的简单示例:import pickledef 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 sset_status(False)s = get_status()assert not s

慕森王

您可以创建一个文件history.txt,然后在启动时打开它,并读取最后的状态,如果不同,则覆盖文件中的该状态并保存。

大话西游666

根据您在评论中所写的内容,我会将其更改为:import jsonping_data = dict()with open('C:\ping_data.json') as file:    data = json.load(file)def ping_host(address):    status = ping_url(address.address)    if data['address.status'] != status:        ping_data['address.status'] = status         send_message(("! " if status is None else "+ " if status else "- ") + address.comment)ping_host(youraddress)with open('C:\ping_data.json', 'w') as file:    json.dump(ping_data, file, indent=2)我这样做的方法是使用 json 库import json接下来我会在你的脚本中创建一个字典saved_data = dict()然后每当我收到更新时我都会将值存储在字典中saved_data['info'] = updated_info和出口?它到一个json文件with open('saved_data.json', 'w') as file:    json.dump(saved_data, file, indent=2)现在,每当我打开程序时,它都会像这样读取该文件with open('saved_data.json') as file:    data = json.load(file)然后我将以字典的形式访问变量数据for k in data:    for info in data[k]:        if info != updated_info            saved_data['info'] = updated_info
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python