python - 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
此函数检查状态,如果已更改,则发送新消息。
解决方案
如果您的文件不需要可移植,最简单的解决方案是使用 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
推荐阅读
- sql - 通过 case 语句和标志进行 SQL 分区
- sql - 理解/优化 Postgresql 中的 SQL 查询
- html - 导航栏与标题重叠,框阴影不显示,无法更改 h1 字体大小
- javascript - 如何仅从Javascript中的完整路径中提取文件名+扩展名?
- ssh - 如何通过 ssh 连接到服务器上的特定计算机?
- ios - SwiftUI View 入门代码在添加到现有项目时抱怨“从非协议类型 'View' 继承”
- ipfs - 同一文件的 CID 是否不同但由 IPFS 中的 2 个用户上传?
- c - Visual Studio Code:参数未传递给 C 命令行应用程序
- raspberry-pi - 为什么我的输入源在发送时没有改变
通过 CEC 客户端发送消息? - couchdb - 使用 couchdb 超级账本结构时加入对等通道时出错