0

実行すると現在の時刻がファイルに書き込まれるスクリプトを作成しようとしています。その後、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発言を引き立たせます。

これら 2 つを同じスクリプトに含めることは可能ですか、またはそれらを分離して両方を .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 に答える