Ce n'os.chemin d'accès.abspath(os.chemin d'accès.join(os.chemin d'accès.dirname(__file__), de l'os.chemin d'accès.pardir))? python
Dans plusieurs DONC la question est de ces lignes pour accéder au répertoire parent du code, par exemple os.chemin d'accès.join(os.chemin d'accès.dirname(__file__)) ne retourne rien et os.chemin d'accès.join(os.chemin d'accès.dirname(__file__)) ne retourne rien
import os, sys
parentddir = os.path.abspath(os.path.join(os.path.dirname(__file__), os.path.pardir))
sys.path.append(parentddir)
Je comprends que os.path.abspath()
retourne le chemin absolu de quelque chose et sys.path.append()
ajoute le chemin d'accès le code d'accès. mais qu'est-ce cryptique ligne ci-dessous, ce que cela signifie vraiment?
os.path.abspath(os.path.join(os.path.dirname(__file__), os.path.pardir))
Est-il une autre façon d'atteindre le même but, en y ajoutant le répertoire parent de la où le code?
Ce problème se produit parce que je suis l'appel de fonctions de l'ensemble des répertoires et parfois, ils partagent le même nom de fichier, par exemple script1/utils.py
et script2/utils.py
. Je suis de l'appel d'une fonction à partir de script1/test.py
qui appelle script2/something.py
contient une fonction qui s'appelle script2/utils.py
et le code suivant
script1/
utils.py
src/
test.py
script2/
utils.py
code/
something.py
test.py
from script2.code import something
import sys
sys.path.append('../')
import utils
something.foobar()
something.py
import os, sys
parentddir = os.path.abspath(os.path.join(os.path.dirname(__file__), os.path.pardir))
sys.path.append(parentddir)
import utils
def foobar():
utils.somefunc()
import utils
? Je n'ai pas la dernière partie droite.OriginalL'auteur alvas | 2014-01-08
Vous devez vous connecter pour publier un commentaire.
Qui est une manière intelligente de se référer à des chemins, indépendamment de l'emplacement du script. Le cryptique ligne vous faites référence est:
Il y a 3 méthodes et des 2 constantes présents:
abspath
retourne le chemin absolu d'un chemin d'accèsjoin
se joindre à des chaînes de chemindirname
renvoie le répertoire d'un fichier__file__
se réfère à lascript
'nom de fichierpardir
renvoie à la représentation d'un répertoire parent dans le système d'exploitation (généralement..
)Ainsi, l'expression renvoie le nom de chemin complet de l'exécution du script dans un multiplateforme-safe. Pas besoin de de câblage toutes les directions, c'est pourquoi il est si utile.
Il pourrait y avoir d'autres approches pour obtenir un répertoire parent de l'endroit où le fichier se trouve, par exemple, les programmes ont la notion de répertoire de travail courant,
os.getcwd()
. Ce faisant,os.getcwd()+'/..'
pourrait fonctionner. Mais c'est très dangereux, en raison de répertoires de travail peut être modifié.Aussi, si le fichier est destiné à être importé, le répertoire de travail sera point à l'importation de fichier, pas le importee, mais
__file__
toujours vers le réel du fichier du module de sorte qu'il est plus sûr.Espérons que cette aide!
OriginalL'auteur Paulo Bu
__file__
représente le fichier le code est en cours d'exécution à partir deos.path.dirname(__file__)
vous donne le répertoire dans lequel le fichier est dansos.path.pardir
signifie"..", ce qui signifie un répertoire au-dessus de l'actuelos.path.join(os.path.dirname(__file__), os.path.pardir)
rejoint le nom du répertoire et ".."os.path.abspath(os.path.join(os.path.dirname(__file__), os.path.pardir))
ci-dessus ne résout le chemin et vous donne un chemin d'accès absolu du répertoire parent du répertoire de votre fichier est enOriginalL'auteur praveen