Python-extraire le chemin du dossier du chemin du fichier
J'ai vu cette solution mais pas spécifiquement pour Python.
Je voudrais obtenir juste le chemin du dossier du chemin complet vers un fichier.
Par exemple T:DataDBDesignDBDesign_93_v141b.mdb
et je voudrais juste T:DataDBDesign
(à l'exclusion de la DBDesign_93_v141b.mdb
).
J'ai essayé quelque chose comme ceci:
existGDBPath = r'T:DataDBDesignDBDesign_93_v141b.mdb'
wkspFldr = str(existGDBPath.split('\')[0:-1])
print wkspFldr
Mais cela m'a donné un résultat comme ceci:
['T:', 'Data', 'DBDesign']
Ce qui n'est pas le résultat dont j'ai besoin (étant T:DataDBDesign
).
Des idées sur la façon dont je peux obtenir le chemin d'accès à mon fichier?
Merci.
4 réponses
Vous étiez presque là avec votre utilisation de la fonction split
. Vous avez juste besoin de joindre les chaînes, comme suit.
>>> '\\'.join(existGDBPath.split('\\')[0:-1])
'T:\\Data\\DBDesign'
Bien que, je recommande d'utiliser la fonction os.path.dirname
pour ce faire, il vous suffit de passer la chaîne, et cela fera le travail pour vous. Puisque, vous semblez être sur windows, pensez à utiliser la fonction abspath
aussi. Un exemple -
>>> os.path.dirname(os.path.abspath(existGDBPath))
'T:\\Data\\DBDesign'
Si vous voulez à la fois le nom du fichier et le chemin du répertoire après avoir été divisé, Vous pouvez utiliser la fonction os.path.split
qui renvoie un tuple, comme suivre.
>>> os.path.split(os.path.abspath(existGDBPath))
('T:\\Data\\DBDesign', 'DBDesign_93_v141b.mdb')
Utilisez le système d'exploitation .chemin module:
>>> import os
>>> existGDBPath = r'T:\Data\DBDesign\DBDesign_93_v141b.mdb'
>>> wkspFldr = os.path.dirname(existGDBPath)
>>> print wkspFldr
'T:\Data\DBDesign'
Vous pouvez aller de l'avant et supposer que si vous avez besoin de faire une sorte de manipulation de nom de fichier, il a déjà été implémenté dans os.path
. Si ce n'est pas le cas, vous devrez probablement utiliser ce module comme bloc de construction.
Mise à JOUR
On devrait envisager d'utiliser pathlib pour le nouveau développement. Il est dans le stdlib pour Python3.4, mais disponible sur PyPI pour les versions antérieures. Cette bibliothèque fournit un plus méthode objet-orented pour manipuler les chemins <opinion>
et est beaucoup plus facile à lire et à programmer avec </opinion>
.
>>> import pathlib
>>> existGDBPath = pathlib.Path(r'T:\Data\DBDesign\DBDesign_93_v141b.mdb')
>>> wkspFldr = existGDBPath.parent
>>> print wkspFldr
Path('T:\Data\DBDesign')
Le sous-module intégré Système d'exploitation.chemin, a une fonction pour cette tâche.
import os
os.path.dirname('T:\Data\DBDesign\DBDesign_93_v141b.mdb')
Voici le code:
import os
existGDBPath = r'T:\Data\DBDesign\DBDesign_93_v141b.mdb'
wkspFldr = os.path.dirname(existGDBPath)
print wkspFldr # T:\Data\DBDesign