2010-09-07 6 views
2

J'utilise le code ci-dessous. Comment ajouter une vérification d'erreur. En cas d'erreur, remplacez la lecture continue Ex: si le volume est N \ a ou manquant, remplacez par 'une valeur'. Ne sautez pas la ligne, ne vous arrêtez pas.Vérification d'erreur python

reader = csv.reader(idata.split("\r\n")) 

stocks = [] 
for line in reader: 
    if line == '': 
     continue 

    stock, price, volume, stime = line 
    price = float(price) 
    volume = int(volume) 

    stocks.append((stock, price, volume, stime)) 

Répondre

2

Faites quelque chose comme ce qui suit:

def isRecordValid(stock,price,volume,stime): 
    #do input validation here, return True if record is fine, False if not. Optionally raise an Error here and catch it in your loop 
    return True 

reader = csv.reader(idata.split("\r\n")) 

stocks = [] 
for line in reader: 
    if line == '': 
     continue 

    stock, price, volume, stime = line 
    try: 
     if isRecordValid(stock,price,volume,stime): 
      price = float(price) 
      volume = int(volume) 
      stocks.append((stock, price, volume, stime)) 
     except Exception as e: 
      print "either print or log and error here, using 'except' means you can continue execution without the exception terminating your current stack frame and being thrown further up" 

définissent Fondamentalement une autre méthode (ou le faire en ligne) pour valider ce stock, le prix, le volume et stime sont tous que vous attendez. J'essaierais d'attraper des erreurs ici aussi au cas où vos appels float() ou int() pour convertir les chaînes de prix et de volume en leurs types attendus échoue pour une raison quelconque.

+0

merci! Mes pensées étaient seulement quelques enregistrements seront mauvais, ou erreur. Je pensais un peu comme si le volume est un texte, return int (0), si le prix est du texte, return float (0) – Merlin

Questions connexes