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 或其他东西调用它们?

提前致谢。

(另外,如果您想知道为什么我会想要一个可以执行此操作的程序,我应该与我的兄弟姐妹共享台式计算机,并且我们通过写下记录来跟踪我们已经使用了多长时间我们上车的时间。这样我应该能够自动化它,并且有办法在被要求下车时谨慎地设置我的时间。)

4

2 回答 2

0

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

file = open('time.txt', 'w')
file.write('Jeremiah got on at ' + str(h) + ':' + str(m))
file.close()
于 2015-10-21T22:06:10.660 回答
0

为了让事情变得更容易,您可以这样做,这样您就不必担心关闭文件,因为它会自行关闭。

With open ('time.txt', 'w') as file:
    file.write('Jeremiah got on at ' + str(h) + ':' + str(m))
于 2017-12-14T14:22:47.540 回答