Maison >développement back-end >Tutoriel Python >Comment ouvrir de manière fiable des fichiers dans le même répertoire que votre script Python en cours d'exécution ?

Comment ouvrir de manière fiable des fichiers dans le même répertoire que votre script Python en cours d'exécution ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-11-20 03:11:01430parcourir

How to Reliably Open Files in the Same Directory as Your Running Python Script?

Ouverture de fichiers dans le répertoire du script en cours d'exécution [Revisité]

En Python, ouverture de fichiers situés dans le même répertoire que le script en cours d'exécution peut être un défi, surtout si l’on considère la compatibilité multiplateforme. Une approche courante consiste à utiliser open("Some file.txt", "r"), qui fonctionne lorsque le script est exécuté à partir de la ligne de commande. Cependant, lorsque le script est lancé via un double-clic sous Windows, il peut tenter d'ouvrir le fichier à partir d'un répertoire incorrect.

Pour résoudre ce problème, les développeurs ont recherché des alternatives fiables. os.path.join(sys.path[0], "Some file.txt") est apparu comme une solution de contournement courante, mais des inquiétudes subsistent quant à ses limites potentielles.

Détermination du répertoire du script

L'identification du répertoire du script est cruciale pour ouvrir les fichiers qui s'y trouvent. Parmi les différentes méthodes disponibles, os.getcwd() et os.path.abspath('') récupèrent le répertoire de travail actuel, qui n'est pas nécessairement le répertoire du script. De même, os.path.dirname(sys.argv[0]) et os.path.dirname(__file__) fournissent le chemin d'exécution du script, qui peut être relatif ou incomplet lorsque le script est exécuté dans certains environnements.

Solution recommandée

Pour garantir une ouverture fiable des fichiers dans le répertoire du script, l'approche suivante est recommandé :

__location__ = os.path.realpath(
    os.path.join(os.getcwd(), os.path.dirname(__file__)))

Cette ligne combine le répertoire de travail actuel et le chemin du script, garantissant que les chemins absolus ne sont pas affectés lors de la résolution des liens symboliques.

Pour ouvrir des fichiers à l'aide de cette méthode :

f = open(os.path.join(__location__, 'bundled-resource.jpg'))

Cette approche fournit une solution robuste pour ouvrir des fichiers dans le même répertoire que le script en cours d'exécution, quel que soit l'environnement ou la plate-forme d'exécution.

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:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn