Python 2.7 如何调试此代码中的缩进?

Python 2.7 如何调试此代码中的缩进?,python-2.7,while-loop,Python 2.7,While Loop,目标是分析文件夹中的日志,如果文件中存在某些关键字,则发送电子邮件。它应该每5秒左右运行一次。 下面的代码是功能性的。唯一的问题是它没有检查while循环中设置的条件,而是无限运行。我想这是压痕的问题吧 import smtplib from email.mime.multipart import MIMEMultipart from email.mime.text import MIMEText import os import time from twilio.rest import Twi

目标是分析文件夹中的日志,如果文件中存在某些关键字,则发送电子邮件。它应该每5秒左右运行一次。 下面的代码是功能性的。唯一的问题是它没有检查while循环中设置的条件,而是无限运行。我想这是压痕的问题吧

import smtplib
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
import os
import time
from twilio.rest import TwilioRestClient

Error_Suspects = ['Error', 'ERROR', 'Failed', 'Failure']


# Error_Suspects = ['failed']


def detect_suspects(file_path, word_list):
    with open(file_path) as LogFile:
        Summary = {word: [] for word in word_list}
        failure = ':'
        for num, line in enumerate(LogFile, start=1):
            for word in word_list:
                if word in line:
                    failure += '<li>' + line + '</li>'
    return failure


prev_file = None
prev_mtime = None
# Error_Suspects = ['Error', 'ERROR', 'Failed', 'Failure']

while True:

    files = os.listdir('.')
    latest_file = max(files, key=os.path.getmtime)

    if latest_file != prev_file or (latest_file == prev_file and prev_mtime != os.path.getmtime(latest_file)):
        Result = detect_suspects(latest_file, Error_Suspects)
        prev_file = latest_file
        prev_mtime = os.path.getmtime(latest_file)



    def py_mail(SUBJECT, BODY, TO, FROM):
        MESSAGE = MIMEMultipart('alternative')
        MESSAGE['subject'] = SUBJECT
        MESSAGE['To'] = TO
        MESSAGE['From'] = FROM
        MESSAGE.preamble = """    """
        HTML_BODY = MIMEText(BODY, 'html')
        MESSAGE.attach(HTML_BODY)

        username = 'XXX'
        password = 'XXX'
        server = smtplib.SMTP('smtp.gmail.com:587')
        server.starttls()
        server.login(username, password)

        if __name__ == "__main__":
            server.set_debuglevel(1)
            server.sendmail(FROM, [TO], MESSAGE.as_string())
            server.quit()


    if Result != None:

        if __name__ == "__main__":
            """Executes if the script is run as main script (for testing purposes)"""

            email_content = """


           <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
         <html xmlns="http://www.w3.org/1999/xhtml">
        <head>
         <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
         <title>Qlik Sense Alerts!</title>
          </head>


         <body bgcolor="#8d8e90">
         <table width="100%" border="0" cellspacing="0" cellpadding="0" bgcolor="#8d8e90">
         <tr>
        <td><table width="600" border="0" cellspacing="0" cellpadding="0" bgcolor="#FFFFFF" align="center">


         <tr>
          <td align="center"><font style="font-family:'Myriad Pro', Helvetica, Arial, sans-serif; color:#68696a; font-size:36px; text-transform:uppercase"><strong>Qlik Sense Alerts!</strong></font></td>
        </tr>
        <tr>
          <td align="center"><a href= "" target="_blank"><img src="http://us.analytics8.com/images/uploads/general/762/qlikmaps-2.png" alt="" width="598" height="249" border="0"/></a></td>
        </tr>
        <tr>
          <td><table width="100%" border="0" cellspacing="0" cellpadding="0">
              <tr>
                <td width="7%"> </td>
                <td width="58%" align="left" valign="top"><table width="100%" border="0" cellspacing="0" cellpadding="0">
                  <tr>
                    <td> </td>
                  </tr>
                  <tr>
                    <td align="left" valign="top"><table width="100%" border="0" cellspacing="0" cellpadding="0">
                      <tr>
                        <td width="95%"><table width="100%" border="0" cellspacing="0" cellpadding="0">
                          <tr>
                            <td height="35" align="left" valign="middle" style="border-bottom:2px dotted #000000"><font style="font-family: Georgia, 'Times New Roman', Times, serif; color:#000000; font-size:25px"><strong><em>Error Information</em></strong></font></td>
                          </tr>
                          <tr>
                            <!-- our content -->


                            <ul> Error List
                             """

            email_content += Result

            email_content += """
                        </ul>
                          </tr>


                        </table></td>
                        <td width="5%" style="border-right:2px dashed #95989a"> </td>
                      </tr>
                    </table></td>
                  </tr>
                </table></td>
              </tr>
            </table></td>
        </tr>
        <tr>
          <td> </td>
        </tr>
        <tr>
          <td align="center"><font style="font-family:'Myriad Pro', Helvetica, Arial, sans-serif; color:#231f20; font-size:8px"><strong>IBM | <a href= "http://google.com" style="color:#010203; text-decoration:none">Coded_i04497l</a></strong></font></td>
        </tr>
        <tr>
          <td> </td>
        </tr>
      </table></td>
         </tr>
        </table>
       </body>
      </html>




         """

            TO = 'xxx.xx@gmail.com'
            FROM = 'XXX.XX@gmail.com'

            py_mail("Qlik Sense Alerts!", email_content, TO, FROM)

time.sleep(5)
导入smtplib
从email.mime.multipart导入MIMEMultipart
从email.mime.text导入MIMEText
导入操作系统
导入时间
从twilio.rest导入TwilioRestClient
Error_Suspects=['Error'、'Error'、'Failed'、'Failure']
#错误_=['failed']
def检测可疑文件(文件路径、单词列表):
打开(文件路径)作为日志文件:
Summary={word:[]用于word_列表中的word}
失败=':'
对于num,枚举中的行(日志文件,开始=1):
对于word\u列表中的word:
如果单词对齐:
故障+='
  • '+line+'
  • ' 返回故障 上一个文件=无 prev_mtime=无 #Error_Suspects=['Error'、'Error'、'Failed'、'Failure'] 尽管如此: files=os.listdir('.')) 最新\u file=max(文件,key=os.path.getmtime) 如果是最新的_文件!=prev_文件或(最新_文件==prev_文件和prev_mtime!=os.path.getmtime(最新_文件)): 结果=检测\u可疑对象(最新的\u文件、错误\u可疑对象) 上一个文件=最新的文件 prev_mtime=os.path.getmtime(最新的_文件) def py_邮件(主题、正文、收件人、发件人): MESSAGE=MIMEMultipart('alternative') 消息['subject']=主题 消息['To']=To 消息['From']=来自 MESSAGE.premission=“”“” HTML_BODY=MIMEText(BODY,'HTML') MESSAGE.attach(HTML_BODY) 用户名='XXX' 密码='XXX' server=smtplib.SMTP('SMTP.gmail.com:587') server.starttls() server.login(用户名、密码) 如果名称=“\uuuuu main\uuuuuuuu”: 服务器。设置调试级别(1) server.sendmail(FROM,[TO],MESSAGE.as_string()) server.quit() 如果有结果!=无: 如果名称=“\uuuuu main\uuuuuuuu”: “”“如果脚本作为主脚本运行(出于测试目的),则执行”“” 电子邮件_content=“” Qlik感知警报! Qlik感知警报! 错误信息
      错误列表 """ 电子邮件内容+=结果 电子邮件内容+=“”“
    IBM | """ TO='xxx。xx@gmail.com' FROM='XXX。XX@gmail.com' py_邮件(“Qlik感知警报!”,电子邮件内容,收件人,发件人) 时间。睡眠(5)
    (代表评论者发布)


    您对
    的期望是什么,而True
    和no
    break
    ?首先,最后一行
    time.sleep(5)
    如果缩进,则更有意义,因此它成为
    循环体的一部分。

    堆栈溢出不是调试服务。请参阅将新函数移出while循环并使用break。如果
    为True
    且没有
    break
    ,您希望得到什么?首先,最后一行
    time.sleep(5)
    如果缩进的话会更有意义,因此它会成为
    while
    循环体的一部分。@augurar我对这个社区和编程都是新手。我将学习我的课程@大赏金我已经做到了,经过小小的尝试和错误,我可以让它工作..谢谢!