web-dev-qa-db-fra.com

Chemins de fichiers indépendants de la plateforme?

Comment puis-je utiliser un fichier dans mon dossier d'application en Python? Plateforme indépendante bien sûr ... quelque chose de similaire à ceci:

#!/bin/sh
mypath=${0%/*}
LIBDIR=$mypath/modules
42
Hairo

Vous pouvez utiliser os.path et ses fonctions, qui prennent en charge les chemins spécifiques au système d'exploitation:

>>> import os
>>> os.path.join('app', 'subdir', 'dir', 'filename.foo')
'app/subdir/dir/filename.foo'

Sous Windows, il devrait s'imprimer avec des barres obliques inverses.

72
Blender
import os
os.path.join(os.path.curdir, 'file.name')

ou

import os
os.path.join(os.path.dirname(__file__), 'file.name')

selon qu'il s'agit d'un module (2) ou d'un seul script (1), et si vous l'invoquez depuis le même répertoire (1), ou d'un autre ((2).

Éditer

En regardant la "tentative" que vous avez dans votre question, je suppose que vous voudriez (1).

18
aviraldg

Dans Python 3.4+ vous pouvez utiliser pathlib :

from pathlib import Path

libdir = Path(__file__).resolve().with_name('modules')

Comment ça marche: l'attribut __file__ Contient le chemin du fichier à partir duquel le module a été chargé. Vous l'utilisez pour initialiser un objet Path, rendre le chemin absolu à l'aide de la méthode resolve() et remplacer le composant de chemin final à l'aide de la fonction with_name() méthode.

7
Eugene Yarmash

__file__ contient l'emplacement du module. Utilisez les fonctions dans os.path pour en extraire le répertoire.