Python植入while循环,检查文件是否包含新数据

时间:2018-05-19 05:43:38

标签: python python-3.x file-handling

我正在尝试编写一个while循环来检查文本文件的最后一行 - TransactionFile.txt定期(每10秒),其中包含附加到文件的事务的数据。

基本上我有两个程序,一个将用户事务附加到一个文件中,另一个读取事务,这两个程序同时运行。

我遇到的问题是确定TransactionFile.txt中当前的交易是否发生了变化。

这是我这样做的功能

def transactionCheck():
    threading.Timer(10.0, transactionCheck).start()
    fileSecLast = None
    while True:
        try:
            file = open('TransactionFile.txt', 'r')
        except FileNotFoundError:
            print('TransactionFile.txt could not found.')
            break
        else:
            file = open('TransactionFile.txt', 'r')
            global fileLast
            fileLast = file.readlines()[-1]
            file.close
            if fileLast == fileLast:
                print('New transaction data found.')
                print(fileLast)
                callfunctionNonce = calcNonce()
            elif fileLast == fileSecLast:
                print('No new transaction data found.')
                break          
            break
        break

这给出了这个的输出:

TransactionFile.txt could not found.
TransactionFile.txt could not found.
TransactionFile.txt could not found.
New transaction data found.
MOWZ575728::max::sam::67890::2018-05-19 13:11:50.250116

New transaction data found.
MOWZ575728::max::sam::67890::2018-05-19 13:11:50.250116

New transaction data found.
MOWZ575728::max::sam::67890::2018-05-19 13:11:50.250116

New transaction data found.
DOYU363556::geoff::tim::14515::2018-05-19 09:12:06.250116

我想要实现的是,如果没有向TransactionFile.txt输出No new transaction data found.写入新事务,而不是再次打印出相同的事务。我应该怎么做呢?

我的预期输出应该是这样的:

TransactionFile.txt could not found.
TransactionFile.txt could not found.

New transaction data found.
MOWZ575728::max::sam::67890::2018-05-19 09:11:50.250116

No new transaction data found.
No new transaction data found.

New transaction data found.
DOYU363556::geoff::tim::14515::2018-05-19 09:12:06.250116

感谢您的反馈和帮助。

如果我的问题不清楚,我会尽力以不同的方式解释。

2 个答案:

答案 0 :(得分:0)

你正在做复杂的方式。如果您可以设法确保文件从头开始退出,则应该这样做:

def transactionCheck():
    file = open("TransactionFile.txt", 'r')
    while True:
        line = file.readline().strip()
        if line:
            print("New transaction:")
            print(line)
            print()
        else:
            print("No new transaction")
        time.sleep(10)

答案 1 :(得分:0)

你永远不会给renderRooms赋值,if条件不是真的。试试这个:

fileSecLast