问题描述
from pynput.keyboard import Key,Listener
from pathlib import Path
from datetime import datetime
class Logger():
limit = 1
lineLength = 15
count = 0
exit = False
text = []
def __init__(self):
self.setKeyboardListner()
def keypressed(self,key):
print(":: {}".format(key))
self.text.append(str(key))
self.count += 1
if self.count % self.limit == 0:
self.log(self.text)
self.resetText()
if self.count % self.lineLength == 0:
self.text.insert(0,"\n")
self.resetCount()
def keyreleased(self,key):
print("** {}".format(key))
if key == Key.esc:
self.exit = True
return False
def setKeyboardListner(self):
self.keyListner = Listener(
on_press=self.keypressed,on_release=self.keyreleased)
def startLogger(self):
self.keyListner.start()
def log(self,text):
path = Path("./log") / "{}.txt".format(datetime.Now().strftime("%Y_%m_%d"))
with path.open('a') as fp:
fp.write(" ".join(self.text))
def resetText(self): self.text = []
def resetCount(self): self.count = 0
if __name__ == "__main__":
print(datetime.Now().strftime("%Y_%m_%d"))
logger = Logger()
logger.startLogger()
while True:
if logger.exit:
break
pass
该脚本工作正常。 It is creating log text files in the log dir according to code and also printing out logs on console
。
我使用 cx_Freeze 将其转换为exe。 为此,我使用setup.py之类的
from cx_Freeze import Executable,setup
from pathlib import Path
# executables = [Executable("logger.py",base = "win32gui")]
executables = [Executable(str(Path("logger.py").absolute()))]
setup(
name="sample",options={
"build_exe": {
"packages": ["pynput"],"include_files": ["./log"]
}
},discription="sample logger",executables=executables
)
而不是像下面这样运行setup.py:python setup.py build
这是运行命令后我的文件夹的样子。
/folder
--/build
--/log
--/logger.py
--/setup.py
此exe文件无法正常运行。终端上没有按键控制台日志,也没有esc键破坏代码。日志文件也未创建!
我做错了什么事!
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)