为了账号安全,请及时绑定邮箱和手机立即绑定

Python输出布尔变量到文件(读、检查、写)

Python输出布尔变量到文件(读、检查、写)

汪汪一只猫 2024-01-16 10:21:57
我是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该函数检查状态,如果状态发生变化,则发送新消息。
查看完整描述

3 回答

?
慕码人2483693

TA贡献1860条经验 获得超9个赞

如果您的文件不需要可移植,最简单的解决方案是使用 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


查看完整回答
反对 回复 2024-01-16
?
慕森王

TA贡献1777条经验 获得超3个赞

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



查看完整回答
反对 回复 2024-01-16
?
大话西游666

TA贡献1817条经验 获得超14个赞

根据您在评论中所写的内容,我会将其更改为:


import json



ping_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


查看完整回答
反对 回复 2024-01-16
  • 3 回答
  • 0 关注
  • 27 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信