仅当python已更改时才更新文本文件

时间:2016-09-23 06:02:13

标签: python linux

好的,我把覆盆子pi挂在车库门上的磁传感器上。我有一个python脚本,每秒更新一个网站(initailstate.com)并报告更改,但它在25k请求后花了很多钱,我很快就杀死了大声笑。 我希望每次门的状态改变时更新文本文件。(打开/关闭)我有一个名为data.txt的文本文件。我有一个网页,使用java脚本读取txt文件,并使用ajax更新并检查文件的更改。这一切都按我想要的方式工作,但是如果且仅当文件的内容不同时,我怎样才能让python更新文本文件?

我希望在门改变状态后使用python更新文本文件。我可以使用数据库,但我认为文本文件更容易入手。 如果我不够具体,请告诉我你需要什么。

2 个答案:

答案 0 :(得分:0)

也许你可以尝试这样的事情:

f = open("state.txt", "w+") # state.txt contains "True" or "False"

def get_door_status():
    # get_door_status() returns door_status, a bool
    return door_status

while True:
    door_status = str(get_door_status())
    file_status = f.read()
    if file_status != door_status:
        f.write(door_status)

答案 1 :(得分:0)

使用专属的小文件时,只需缓存其内容即可。这对您的存储来说更快,更健康。

# start of the script
# load the current value
import ast
status, status_file = False, "state.txt"
with open(status_file) as stat_file:
    status = ast.literal_eval(next(stat_file()))

# keep on looping, check against *known value*
while True:
    current_status = get_door_status()
    if current_status != status:  # only update on changes
        status = current_status  # update internal variable
        # open for writing overwrites previous value
        with open(status_file, 'w') as stat_file:
            stat_file.write(status)