def FileCheck(fn):       
       try:
           fn=open("TestFile.txt","U") 
       except IOError: 
           print "Error: File does not appear to exist."
       return 0 

J'essaie de créer une fonction qui vérifie si un fichier existe et si ce n'est pas le cas, il devrait afficher le message d'erreur et retourner 0. Pourquoi ça ne marche pas ???

6
O.rka 5 déc. 2011 à 05:14

4 réponses

Meilleure réponse

Vous devrez indenter le retour 0 si vous souhaitez revenir de l'intérieur du bloc except. De plus, votre argument ne fait pas grand-chose. Au lieu de lui affecter le descripteur de fichier, je suppose que vous voulez que cette fonction puisse tester n'importe quel fichier? Sinon, vous n'avez pas besoin d'arguments.

def FileCheck(fn):
    try:
      open(fn, "r")
      return 1
    except IOError:
      print "Error: File does not appear to exist."
      return 0

result = FileCheck("testfile")
print result
18
OregonTrail 5 déc. 2011 à 01:30

Je pense que os.path.isfile() est mieux si vous voulez juste "vérifier" si un fichier existe car vous n'avez pas besoin d'ouvrir le fichier. Quoi qu'il en soit, après ouverture, il est recommandé de fermer le fichier et les exemples ci-dessus ne l'ont pas inclus.

3
isedev 30 mars 2016 à 17:45

Si vous souhaitez simplement vérifier si un fichier existe ou non, la bibliothèque python os a des solutions pour cela telles que os.path.isfile('TestFile.txt'). La réponse OregonTrails ne fonctionnerait pas car vous auriez toujours besoin de fermer le fichier à la fin avec un bloc finally, mais pour ce faire, vous devez stocker le pointeur de fichier dans une variable en dehors du bloc try et except, ce qui va à l'encontre de l'objectif de votre solution.

-1
Hamid Haris 23 juil. 2019 à 14:43

Cela est probablement dû au fait que vous souhaitez ouvrir le fichier en mode lecture. Remplacez le "U" par "r".

Bien sûr, vous pouvez également utiliser os.path.isfile('filepath').

4
D K 5 déc. 2011 à 01:36
8380006