2016-11-18 1 views
0

Je crée un programme qui demande à l'utilisateur de choisir un fichier à exécuter dans le programme, mais je ne peux pas empêcher le programme de se bloquer lorsqu'un nom de fichier n'existe pas est saisi. J'ai essayé des instructions try et des boucles, mais elles ont toutes donné une erreur. Le code que j'ai pour choisir le fichier est ci-dessous:Impossible d'arrêter le programme de plantage avec le mauvais fichier entré par l'utilisateur

data = [] 
print "Welcome to the program!" 
chosen = raw_input("Please choose a file name to use with the program:") 
for line in open(chosen): 
    our_data = line.split(",") 

    data.append(our_data) 
+0

Veuillez montrer comment vous avez essayé les instructions 'try'. C'est la bonne façon de faire cela. –

+0

'try' est la bonne solution ici. Montrez-nous votre code qui l'a utilisé. –

Répondre

0

RTM

import sys 

try: 
    f = open('myfile.txt') 
    s = f.readline() 
    i = int(s.strip()) 
except IOError as e: 
    print "I/O error({0}): {1}".format(e.errno, e.strerror) 
except ValueError: 
    print "Could not convert data to an integer." 
except: 
    print "Unexpected error:", sys.exc_info()[0] 
    raise 
3

Ajouter une exception:

data = [] 
print "Welcome to the program!" 
chosen = raw_input("Please choose a file name to use with the program:") 
try: 
    for line in open(chosen): 
     our_data = line.split(",") 

     data.append(our_data) 
except IOError: 
     print('File does not exist!') 
2

Sans utiliser une exception, vous pouvez simplement vérifier si le fichier existe et sinon, demandez-le à nouveau.

import os.path 

data = [] 
print "Welcome to the program!" 
chosen='not-a-file' 
while not os.path.isfile(chosen): 
    if chosen != 'not-a-file': 
     print("File does not exist!") 
    chosen = raw_input("Please choose a file name to use with the program:") 
for line in open(chosen): 
    our_data = line.split(",") 

    data.append(our_data)