问题描述
我正在尝试编写一个脚本,该脚本在运行时会将当前时间写入文件,然后希望它在后台保持打开状态,以便每当我按插入键时,它将写入当前时间到文件减去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之类的东西调用它们?
提前致谢。
(同样,如果您想知道为什么在世界上我想要一个可以做到这一点的程序,我应该与兄弟姐妹共享台式机,并且我们会记下我们已经工作了多长时间了我们开始的时间。这样,我应该能够使其自动化,并且有一种方法可以在被要求下车时谨慎地设定时间。)
1楼
我知道了。 在启动部分写入文件后,我只需要关闭文件。
file = open('time.txt', 'w')
file.write('Jeremiah got on at ' + str(h) + ':' + str(m))
file.close()
2楼
为了使事情变得更容易,您可以执行此操作,因此您不必费心关闭文件,因为它只会自己关闭。
With open ('time.txt', 'w') as file:
file.write('Jeremiah got on at ' + str(h) + ':' + str(m))