我在使用python
编写文件时遇到了麻烦from validate_email import validate_email
result=open('output1.tsv','wb')
f=open('input.csv','r')
y=[]
result.write('Email_address\tEmail_validation\n')
for i in f:
y.append(i.replace('\n',''))
for j in y:
try:
val=validate_email('%s'%j, verify=True)
except:
val = "Check Again"
result.write('%s\t%s\n'%(j,val))
print j,val
这里变量x有一些操作,处理它可能需要一些时间。
变量y的计数超过500(输入文件包含700行)。
但是在运行此程序后,只能在输出文件中写入120左右。
答案 0 :(得分:1)
一个更惯用的python是
emails = [l.strip() for l in open('input.csv','r').readlines()]
valid = [str(validate_email(addr, validate=1)) for addr in emails]
validated = ['\t'.join(addr_val) for addr_val in zip(emails, valid)]
with of as open('output.tsv'):
of.write('Email_address\tEmail_validation\n')
of.write('\n'.join(validated)) # if needed ; of.write('\n')
考虑到可能由TimeoutError
模块引发smtp
异常的可能性,您可以编写辅助函数
def validate_no_timeout(address):
try:
response = str(validate_email(address, validate=1))
except TimeoutError:
response = "Time Out"
return response
并重写原始帖子中的第二行以阅读
valid = [validate_no_timeout(addr) for addr in emails]
注意:在OP中,我看到了对超时错误的通用引用。在我的代码中,由于缺乏来自OP的确切信息,我抓住了TimeoutError
异常。
答案 1 :(得分:0)
您在写入文件时使用字符串尝试将其更改为:
t.write('%d\t%d\n'%(j,x))
如果这不能解决问题,请尝试扩展问题中的代码,以便我们提供更多帮助。