使python脚本等待模块函数返回

使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

我正在学习python,并试图在Syrus Akbary模块的帮助下编写一个脚本来验证电子邮件域是否存在。如果这是问问题的正确方式,我深表歉意。此脚本将“电子邮件列表文件”作为输入,文件中将包含电子邮件。我已经在pythonshell中安装了模块并测试了部分模块,但是在脚本中,它无法工作,并且在不等待和写入文件的情况下运行(太快了,在pythonshell中需要2,3秒)

下面是我的代码:

#!/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运行它?我更新了这个问题,请参阅帖子。