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

时间:2015-10-21 21:33:20

标签: python pyhook

我正在尝试编写一个脚本,当我运行它时,它会将当前时间写入文件,然后我希望它在后台保持打开状态,以便每次按下Insert键都会写入文件的当前时间减去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或其他东西调用它们?

提前致谢。

(如果你想知道为什么在这个世界上我会想要一个可以做到这一点的程序,我应该和我的兄弟姐妹分享台式电脑,我们跟踪我们已经有多长时间了写下我们上演的时间。这样我就能够自动化它,并且有办法在被要求下车时谨慎地设定我的时间。)

2 个答案:

答案 0 :(得分:0)

我明白了。我只需要在启动部分写入文件后关闭该文件。

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

答案 1 :(得分:0)

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

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