Comment faire pour résoudre les chemins relatifs en python?
J'ai structure de Répertoire comme ce
projectfolder/fold1/fold2/fold3/script.py
maintenant, je suis en train de faire script.py un chemin d'accès comme argument de ligne de commande d'un fichier qui est dans
fold1/fold_temp/myfile.txt
Donc, fondamentalement, je veux être en mesure de donner le chemin d'accès de cette façon
../../fold_temp/myfile.txt
>>python somepath/pythonfile.py -input ../../fold_temp/myfile.txt
Ici le problème c'est que je pourrais avoir plein de chemin de chemin d'accès relatif ou je devrais donc être en mesure de décider et, d'après ce que je devrais être en mesure de créer un chemin absolu.
J'ai déjà des connaissances de fonctions liées à la trajectoire.
Questions de référence sont de donner réponse partielle, mais je ne sais pas comment construire un chemin d'accès complet à l'aide des fonctions prévues dans les.
- Si l'utilisateur est passé dans un chemin d'accès correct, pourquoi pensez-vous qu'il soit absolu ou relatif? Python n'est certainement pas de soins, et votre utilisateur n'a probablement pas de soins.
- Double Possible de Comment obtenir le chemin absolu du fichier en Python
Vous devez vous connecter pour publier un commentaire.
Utiliser os.chemin d'accès.isabs de juger si le chemin est absolu ou relatif, si elle est relative, l'utilisation de l'os.chemin d'accès.rejoignez convertir absolu
os.path.join(dir, path)
est déjà égal àpath
, sipath
est absolue (testé sur Pyhon 3.6).essayer os.chemin d'accès.abspath, il convient de faire ce que vous voulez 😉
Fondamentalement, il convertit tout donné le chemin d'accès à un chemin absolu, vous pouvez travailler avec, de sorte que vous n'avez pas besoin de distinguer entre la relative et absolue des chemins, juste normaliser l'un d'eux avec cette fonction.
Exemple:
Il affiche le chemin absolu de votre fichier.
EDIT:
Si vous utilisez Python 3.4 ou plus récent, vous pouvez également utiliser le resolve() méthode de pathlib.Chemin. Être conscient que cela renvoie un Chemin d'accès de l'objet et non pas une chaîne. Si vous avez besoin d'une chaîne de caractères, vous pouvez toujours utiliser
str()
pour la convertir en une chaîne de caractères.Exemple:
Pour Python3, vous pouvez utiliser pathlib de résoudre fonctionnalité pour résoudre les liens symboliques et
..
composants.Vous avez besoin d'avoir un Chemin d'accès de l'objet, mais il est très simple de convertir entre str et le Chemin d'accès.
Je recommande pour toute personne utilisant Python3 à goutte
os.path
et son désordre longue noms de fonction et de tenir àpathlib
des objets de Chemin.Un exemple pratique:
sys.argv[0]
vous donne le nom du script courantos.path.dirname()
vous donne le répertoire relatif nomainsi, à la ligne suivante, vous donne l'absolu du répertoire de travail actuel de l'exécution de fichier.
cwd = os.path.abspath(os.path.dirname(sys.argv[0]))
Personnellement, j'ai toujours utiliser ce lieu de
os.getcwd()
car il me donne le script chemin d'accès absolu, indépendant du répertoire où le script a été appelé.