使python脚本等待模块函数返回
我正在学习python,并试图在Syrus Akbary模块的帮助下编写一个脚本来验证电子邮件域是否存在。如果这是问问题的正确方式,我深表歉意。此脚本将“电子邮件列表文件”作为输入,文件中将包含电子邮件。我已经在pythonshell中安装了模块并测试了部分模块,但是在脚本中,它无法工作,并且在不等待和写入文件的情况下运行(太快了,在pythonshell中需要2,3秒) 下面是我的代码:使python脚本等待模块函数返回,python,python-2.7,Python,Python 2.7,我正在学习python,并试图在Syrus Akbary模块的帮助下编写一个脚本来验证电子邮件域是否存在。如果这是问问题的正确方式,我深表歉意。此脚本将“电子邮件列表文件”作为输入,文件中将包含电子邮件。我已经在pythonshell中安装了模块并测试了部分模块,但是在脚本中,它无法工作,并且在不等待和写入文件的情况下运行(太快了,在pythonshell中需要2,3秒) 下面是我的代码: #!/bin/python #python version used is 2.7.5 import sy
#!/bin/python
#python version used is 2.7.5
import sys
if len(sys.argv) != 2:
print "Missing Email List File"
exit()
else:
email_listfile=sys.argv[1]
with open(email_listfile,'r') as email:
for line in email.readlines():
print line
status_mx=validate_email(line,check_mx=True)
print status_mx
if status_mx == True:
with open('corrected-emails.txt','a') as truemail:
truemail.write(line)
else:
pass
电子邮件列表文件如下所示:
zokomov@gmail.com
johnson9010@yahoo.com
appurgn@hotmail.com
下面是我运行脚本时的输出
# ./test.py emaillist.txt
zokomov@gmail.com
False
johnson9010@yahoo.com
False
appurgn@hotmail.com
False
*在pythonshell中运行时
>>> from validate_email import validate_email
>>> status_mx = validate_email('appurgn@hotmail.com',check_mx=True)
>>> print status_mx
True
#when given a non existing domain
>>> status_mx = validate_email('appurgn@h987yyttl.com',check_mx=True)
>>> print status_mx
False
问题是你在电子邮件后有一条新行。您可以注意到,当您打印电子邮件本身时,
False
状态在打印时中间有一条空行-
# ./test.py emaillist.txt
zokomov@gmail.com
False
johnson9010@yahoo.com
False
这是最可能导致库出现问题的原因,您应该在从末尾和开头去掉额外的换行符/空格后发送电子邮件。范例-
else:
email_listfile=sys.argv[1]
with open(email_listfile,'r') as email:
for line in email.readlines():
print line
status_mx=validate_email(line.strip(),check_mx=True)
print status_mx
为什么你认为输出是错误的?当它工作时,你如何从shell运行它?我更新了这个问题,请参阅帖子。