Maison  >  Article  >  développement back-end  >  Comment résoudre les pièges de os.path.exits() en python

Comment résoudre les pièges de os.path.exits() en python

WBOY
WBOYavant
2023-05-16 17:58:271082parcourir

Problème

Parfois, nous voyons souvent du code similaire :

assert os.path.isdir(path_model_dir)
assert os.path.exits(path_model_dir)

Si vous remplissez un chemin relatif comme path_model_dir, cela aura des conséquences désastreuses. Nous devons faire attention aux éléments suivants :

  • La méthode os.path.exists() n'utilise pas directement le chemin dans sys.path pour trouver le fichier. Elle vérifie si le chemin donné est en appelant celui du système d'exploitation. existent.

  • Lors de l'utilisation d'un chemin relatif, Python l'interprétera d'abord comme relatif au répertoire de travail actuel. Normalement, le répertoire de travail actuel d'un interpréteur interactif est le répertoire à partir duquel l'interpréteur a été démarré.

Les deux paragraphes ci-dessus expliquent que si vous renseignez un chemin relatif, le chemin relatif mentionné ici est un chemin relatif relatif au fichier actuel, ou un chemin relatif relatif à l'interpréteur, qu'il soit relatif à l'exécution de l'interpréteur , ou le débogage de l'interprète, ou les chemins relatifs à partir de la ligne de commande ? Une fois, j'ai édité du code dans le même éditeur, et il pouvait être exécuté directement lors de l'exécution, mais il continuait à signaler des erreurs lors du débogage. Plus tard, j'ai découvert que les chemins relatifs de l'interpréteur de débogage et de l'interpréteur en cours d'exécution dans le même éditeur étaient différents (étonnamment). ! ).

Et la méthode os.path.exists() n'utilise pas directement le chemin dans sys.path pour rechercher des fichiers, ni les variables d'environnement dans ~/.bashrc pour rechercher des fichiers. Elle utilise uniquement des chemins relatifs et des chemins absolus. . Rechercher des fichiers.

Suggestions

Il y a deux suggestions. Le point essentiel est d'utiliser des chemins absolus.

  • Écrivez directement le chemin absolu dans la chaîne

  • (recommandé) Utilisez __file__ pour séparer le chemin absolu relatif au fichier de script

Certaines personnes posent des questions sur le chemin ajouté dans sys.path.append( path) A quoi sert-il ? En fait, le chemin ajouté ici sert principalement à importer le package d'import. Autrement dit, si vous souhaitez ajouter des répertoires supplémentaires au chemin de recherche du module Python, vous pouvez ajouter ces répertoires à la liste sys.path. Cela amènera Python à inclure automatiquement ces répertoires lors de la recherche de modules. Notez cependant que cette méthode est utilisée lorsque Python importe le module, et non lors de l'appel de la méthode os.path.exists().

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer