【问题标题】:How to check if the first line has changed in a text file using python如何使用python检查文本文件中的第一行是否已更改
【发布时间】:2022-11-30 00:44:44
【问题描述】:

我正在尝试编写一个脚本来检查文本文件的第一行是否已更改并打印一次该值。它需要是一个无限循环,所以它会一直检查变化。我遇到的问题是当值发生变化时,它会不断打印并且不会检测到新的变化。 我需要的是不断检查第一行的脚本,如果值发生变化则打印一次,如果不发生变化则什么都不做。 到目前为止,这是我尝试过的:

def getvar():
    with open('readme.txt') as f:
        first_line = f.readline().strip('\n')
    result = first_line
    return result

def checkvar():
    initial = getvar()
    print("Initial var: {}".format(initial))
    while True:
        current = getvar()
        if initial == current:
            pass                                
        else:
            print("var has changed!")
            pass

checkvar() 

【问题讨论】:

  • 查看watchdog
  • 我想你只需要在 else 块内重新分配 initial = current

标签: python if-statement while-loop


【解决方案1】:

如果初始行已更改,请将 initial 设置为 current
在函数checkvar()

def checkvar():
     initial = getvar()
     print("Initial var: {}".format(initial))
     while True:
        current = getvar()
        if initial == current:
            pass                                
        else:
            initial = current #initial line set to current line
            print("var has changed!")
            pass

【讨论】:

    【解决方案2】:

    您永远不会重新分配初始值,因此当您检查是否为 initial == current 时,它只会检查文件的第一个版本。相反,重新分配如下

    def getvar():
        with open('readme.txt') as f:
            first_line = f.readline().strip('
    ')
        result = first_line
        return result
    
    def checkvar():
        last = getvar()
        while True:
            current = getvar()
            if last != current:
                print("var has changed!")
                last = current
    
    checkvar()
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-09-13
      • 2012-09-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-05-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多