我写了一个python程序,报错NameError: name XX is not defined 求解

#发送邮件
def send_mail(latest_report):#定义邮件发送的方法(最新的测试报告)
f=open(latest_report,'rb') #打开最新报告,已二进制方式读取
mail_body=f.read() #定义报告内容
f.close()
错误提示
Traceback (most recent call last):
File "E:/python_script/AutoTest_project/Website/run_test.py", line 2, in <module>
from function import *
File "E:\python_script\AutoTest_project\Website\test_case\model\function.py", line 55, in <module>
msg=MIMEText(mail_body,'html','utf-8') #定义内容
NameError: name 'mail_body' is not define

Python程序,错误NameError:名称XX未定义不是由声明引起的,需要在文件的前两行声明代码,声明方法是:

1,在文件中写一个带有中文字符的python文件,不进行编码。

2,当程序文件中有中文字符时,如果文件未声明编码格式,则会显示错误消息:文件“encode.py”,第1行#SaxaxError:文件编码中的非ASCII字符'\ xe7'。 py在第1行,但没有编码声明;有关详细信息,请参阅//..python.../dev/peps/pep-0263/。

3,根据错误提示,在python官方网站上获取以下帮助信息。

4,因此,请按照帮助文档提示和示例在Python文件中包含代码声明。

5,保存后,再次运行,运行成功。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2019-08-19

python程序,报错NameError: name XX is not defined 是没有声明造成的,需要在文件的前两行进行声明编码,声明方法为:

1、写一个python文件,文件中有中文字符,且未声明编码。

2、当程序文件中,存在中文字符时候,文件未声明编码格式就会出现报错信息:  File "encode.py", line 1SyntaxError:
Non-ASCII character '\xe7' in file encode.py on line 1, but no encoding
declared; see //..python.../dev/peps/pep-0263/ for details for details。

3、根据错误提示,在python官网得到如下帮助信息。

4、所以,按照帮助文档的提示以及例子,在Python文件中加入一个编码声明。

5、保存之后,再次运行,运行成功。

本回答被网友采纳
第2个回答  2018-04-20
错误在msg=MIMEText(mail_body,'html','utf-8')这一行,mail_body没有定义。追问

怎么定义?我整个框架 都是做好了,怎么找到问题出来哪里呢?
def latest_report(report_dir):
lists = os.listdir(report_dir) # 可以打印report文件下的所以子文件
print("latest report is:'lists[-1]")
file = os.path.join(report_dir,lists[-1])
print(file)
return file #返回数据

本回答被网友采纳
相似回答