python - 文本文件中的整数值不变
问题描述
我有一个函数可以检索文本文件中内容的当前值,然后在我的程序结束时将值增加 1。但是,该值并不总是增加。可能是什么原因?
获取 var 值
def get_var_value(filename="varstore.dat"):
with open(filename, "r+") as f:
val = int(f.read() or 0)
f.seek(0)
f.truncate()
return val
将值增加 1:
def increase_var_value(filename="varstore.dat"):
with open(filename, "r+") as f:
val = int(f.read() or 0) +1
f.seek(0)
f.truncate()
f.write(str(val))
return val
解决方案
该get_var_value
函数不需要查找和截断文件。它在读取文件之前删除文件的increment_var_value
内容。因此,increment_var_value
始终将其读取为 0,然后将其递增 1,因此该值始终为 1。
代码现在是,
def get_var_value(filename="varstore.dat"):
with open(filename, "r") as f:
val = int(f.read() or 0)
return val
def increase_var_value(filename="varstore.dat"):
with open(filename, "r+") as f:
val = int(f.read() or 0) + 1
f.seek(0)
f.truncate()
f.write(str(val))
return val
推荐阅读
- php - 安装 jagger 时遇到未捕获的异常
- firebase - 从 firebase 获取价值并在 useState React native 中使用它
- typescript - 如何从 Next.js 正确键入 _document.tsx 文件?
- javascript - 在用户不活动的情况下显示白页(即什么都没有),并在浏览器中选择选项卡时刷新页面
- python - 使用不同模型的 Django Rest Framework 中的嵌套序列化程序
- c - 如何使 GDB stepi 更快?
- html - 如何在 flex 布局中插入不同宽度的占位符?
- azure - ASP.NET CORE 5 - AD 身份验证
- javascript - 使元素可拖动以用于触摸屏
- visual-studio - 调试器显示不存在的对象属性