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

Python将布尔变量输出到文件(读取、检查、写入),python,python-3.x,Python,Python 3.x,我是python新手 告诉我如何实现将变量的值保存到文件中,以便在程序重新启动时不会收到不必要的通知 程序ping服务器并在状态更改时发送消息。重新启动程序时,不会保存其检查的历史记录。这很不舒服 我希望我正确地解释了这个问题 我需要不断地将检查结果保存到文件中,并在比较新检查时使用这些数据 def ping_host(address): status = ping_url(address.address) if status != address.status:

我是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

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

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

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

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
for k in data:
    for info in data[k]:
        if info != updated_info
            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)
然后,我将以字典的形式访问变量数据

saved_data['info'] = updated_info
for k in data:
    for info in data[k]:
        if info != updated_info
            saved_data['info'] = updated_info

如果文件不需要可移植,最简单的解决方案是使用python。缺点是,与基于文本的保存(例如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

你应该使用:你在谷歌上搜索过如何将内容写入文件吗?如何从文件中读取内容?您的代码未显示任何写入/读取尝试。”关于文件编写,f.e.等等,已经有很多问题了。在这里的文档中处理了将文件持久化的问题。目前,这个问题是一个“给我代码”的请求,没有花费任何精力,也不清楚真正的问题在哪里——“我不知道如何做X”不是一个如此问题的理由。“我试过Y,但这发生了,我在这里读到了,这就是我的问题”可能是一个。是的,我同意,但在任何检查过程中,状态可能会改变。所以每次检查时,我都需要保存更改。但是如何在代码中实现呢?我需要更多的时间来解决这个问题。谢谢。我是否正确理解了写作的本质和语法
def init():ping_data=dict(),打开('C:\ping_data.json')作为文件:data=json.load(file)
def ping_host(address):status=ping_url(address.address)for k in data:for address.status in data[k]:if address.status!=状态ping_数据['address.status']=status send_message((“!”if status is None-else“+”if status-else“-”)+address.comment),打开('C:\ping_data.json','w')作为文件:json.dump(ping_数据,文件,缩进=2)
错误-python C:\main_3.py文件“C:\main_3.py”,第13行数据=json.load(文件)^IndentationError:unindent与任何外部缩进级别都不匹配我没有这样的文件。。。现在我不知道如何使它自己)或使它为空?使一个空文件-main_3.py“,第61行ping_data['address.status']=status^TabError:缩进中制表符和空格的使用不一致您应该明确删除您制作的文件,并检查代码中的缩进是否必须匹配