2014-12-03 16 views
7
walidacja

emailnieobsługiwany operacja: nie zapisywalny pyton

#Email validator 
import re 

f= open ('ValidEmails.txt', 'w') 

def is_email(): 
    email=input("Enter your email") 
    pattern = '[\.\w]{1,}[@]\w+[.]\w+' 
    file = open('ValidEmails.txt','r') 
    if re.match(pattern, email): 
     file.write(email) 

     file.close 
     print("Valid Email") 
    else: 
     print("Invalid Email") 

#The Menu   
print("The Email validator progam \n") 
print("What do you want to do\n") 
print("Validate the Email") 
print("Quit") 

while True: 
     answer=(input("Press V, or Q : ")) 
     if answer in("V" ,"v"): 
      is_email() 
     elif answer in("Q" ,"q"): 
      break 
     else: 
      print("Invalid response") 

Zastanawiam się, dlaczego moje dane przyzwyczajenie napisać do disk.Python mówi, że moja praca nie jest obsługiwany.

is_email 
    file.write(email) 
io.UnsupportedOperation: not writable 

powinienem konwertować wiadomości e-mail do łańcucha tak lub

file.write(str(email)) 

jest to coś innego

jestem prawdopodobnie brakuje czegoś bardzo prostego.

+0

Należy podać pełne informacje zwrotne o wystąpieniu błędu. –

Odpowiedz

21

Otwierasz zmienną "plik" jako tylko do odczytu, a następnie próbujesz do niej pisać. Użyj flagi "w".

file = open('ValidEmails.txt','w') 
... 
file.write(email) 
0
file = open('ValidEmails.txt','wb') 
file.write(email.encode('utf-8', 'ignore')) 

to rozwiązać encode error również.