Python 2.7 如何调试此代码中的缩进?
目标是分析文件夹中的日志,如果文件中存在某些关键字,则发送电子邮件。它应该每5秒左右运行一次。 下面的代码是功能性的。唯一的问题是它没有检查while循环中设置的条件,而是无限运行。我想这是压痕的问题吧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
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
和nobreak
?首先,最后一行time.sleep(5)
如果缩进,则更有意义,因此它成为循环体的一部分。堆栈溢出不是调试服务。请参阅将新函数移出while循环并使用break。如果为True
且没有break
,您希望得到什么?首先,最后一行time.sleep(5)
如果缩进的话会更有意义,因此它会成为while
循环体的一部分。@augurar我对这个社区和编程都是新手。我将学习我的课程@大赏金我已经做到了,经过小小的尝试和错误,我可以让它工作..谢谢!