当前位置: 代码迷 >> python >> Python:如何让脚本在运行时写入文件,然后保持打开状态以在按键上进行写入?
  详细解决方案

Python:如何让脚本在运行时写入文件,然后保持打开状态以在按键上进行写入?

热度:116   发布时间:2023-06-13 16:56:16.0

我正在尝试编写一个脚本,该脚本在运行时会将当前时间写入文件,然后希望它在后台保持打开状态,以便每当我按插入键时,它将写入当前时间到文件减去7分钟。

我可以根据需要同时使用这两个功能,但是它们只能单独工作。 就像这样,如果我标记出使它保持打开状态以寻找按键的块(我正在使用pyhook),它将仅记录我运行它的时间。 而且,如果我标记出可以写出我第一次运行时的时间的部件,它只会在寻找按键时保持打开状态。 这是我的代码

import pyHook, pythoncom
from datetime import datetime

#writes the time when it starts bit
t = datetime.now()
h = t.hour
m = t.minute
s = t.second

if h > 12:
    h = h - 12

if m < 10:
    m = str(m).zfill(2)

file = open('time.txt', 'w')
file.write('Jeremiah got on at ' + str(h) + ':' + str(m))


#stays open and looks for a keypress bit
hookManager = pyHook.HookManager()

def OnKeyboardEvent(event):
    keyPressed = event.KeyID
    if keyPressed == 45:
        t = datetime.now()
        h = t.hour
        m = t.minute
        s = t.second

        if h > 12:
            h = h - 12

        if m < 10:
            m = int(str(m).zfill(2))

        if m - 7 < 0:
            h = h - 1
            sub = m - 7
            m = 60 + sub
        else:
            m = m - 7

        file = open('time.txt', 'w')
        file.write('Jeremiah got on at ' + str(h) + ':' + str(m))
    return True


hookManager.KeyDown = OnKeyboardEvent
hookManager.HookKeyboard()
pythoncom.PumpMessages()

如果我未标记任何部分,它将在启动时清除文本文件,然后保持打开状态以查找按键。 仅标记启动时间部分将使其保持打开状态以正确查找密钥,并且不会清除文本文件。 因此,我可以肯定的是,一旦它开始寻找密钥后便会清除文件,这是一个问题,但是我不确定原因,尤其是因为在密钥输入之前,它甚至不应该运行任何与文本文件相关的代码被按下,关闭了我的if语句。

是否可以在同一脚本中同时使用这两个脚本,还是我必须将它们分开并用.bat之类的东西调用它们?

提前致谢。

(同样,如果您想知道为什么在世界上我想要一个可以做到这一点的程序,我应该与兄弟姐妹共享台式机,并且我们会记下我们已经工作了多长时间了我们开始的时间。这样,我应该能够使其自动化,并且有一种方法可以在被要求下车时谨慎地设定时间。)

我知道了。 在启动部分写入文件后,我只需要关闭文件。

file = open('time.txt', 'w')
file.write('Jeremiah got on at ' + str(h) + ':' + str(m))
file.close()

为了使事情变得更容易,您可以执行此操作,因此您不必费心关闭文件,因为它只会自己关闭。

With open ('time.txt', 'w') as file:
    file.write('Jeremiah got on at ' + str(h) + ':' + str(m))
  相关解决方案