Ce module fait partie d'une application simple todo J'ai fait avec Python ...Python: affectation de liste hors de portée
def deleteitem():
showlist()
get_item = int(raw_input("\n Enter number of item to delete: \n"))
f = open('todo.txt')
lines = f.readlines()
f.close()
lines[get_item] = ""
f = open('todo.txt','w')
f.writelines(lines)
f.close()
showlist()
Le nombre de lignes f change évidemment que les éléments sont ajoutés à la liste .. . le problème est ici que, par exemple si un utilisateur entre « 10 » quand il y a seulement 9 lignes dans le fichier (ou toute autre chose hors de portée), quand elle sort comme prévu avec:
IndexError: list assignment index out of range
que puis-je ajouter à le module de façon à ce qu'il invite l'utilisateur à entrer un élément dans la gamme? Je suppose que peut-être un bloc Try ... Ou y at-il un moyen d'attraper une exception .. Je devine qu'il y a un moyen facile de le faire ...
Merci, cela a fonctionné. J'utilise Python 2.5.x..donc je me suis accroché avec 'avec'. J'ai ajouté "de future__import__ with_statement" au script et tout a été défini. Je pense que dans votre code, la ligne "if len (lines) == 0:" peut avoir besoin d'être indentée? ... Je recevais une erreur jusqu'à ce que je l'ai fait – cit
@skylarking: Il ne devrait pas besoin d'indentation, et cette partie devrait fonctionner correctement comme je l'ai ci-dessus. Peut-être que vous avez accidentellement maugréé? –
C'est très probable que j'ai fait une erreur là-bas .... J'ai posté l'application todo complète comme une réponse ici si vous êtes curieux.Je suis sûr qu'il y a beaucoup d'améliorations qui peuvent arriver là aussi. – cit