86 votes

Quelle est la différence entre makedirs et mkdir de os ?

Je suis confus quant à l'utilisation de ces deux os pour créer le nouveau répertoire.

Veuillez me donner un exemple en Python.

140voto

NPE Points 169956

makedirs() crée tous les répertoires intermédiaires s'ils n'existent pas (tout comme mkdir -p dans bash).

mkdir() peut créer un seul sous-répertoire et lèvera une exception si des répertoires intermédiaires qui n'existent pas sont spécifiés.

L'un ou l'autre peut être utilisé pour créer un seul répertoire "feuille" (dirA) :

  • os.mkdir('dirA')
  • os.makedirs('dirA')

Mais les makedirs doivent être utilisés pour créer des "branches" :

  • os.makedirs('dirA/dirB') fonctionnera [toute la structure est créée]

mkdir peut travailler ici si dirA existe déjà, mais si ce n'est pas le cas, une erreur sera levée.

Il convient de noter que, contrairement aux mkdir -p en bash, l'une ou l'autre échouera si la feuille existe déjà.

28voto

Yunqing Gong Points 745

(Je ne peux pas faire de commentaires, je ne fais que compléter la réponse de NPE).

Dans Python3, os.makedirs a un paramètre par défaut exist_ok=False .
Si vous le réglez sur True entonces os.makedirs volonté no lever toute exception si la feuille existe.
(Alors que os.mkdir n'a pas ce paramètre).

Comme ceci :

os.makedirs('dirA', exist_ok=True)

P.S.
Vous pouvez taper ? devant le nom d'une méthode dans le shell IPython pour jeter un coup d'œil rapide à la documentation.
par exemple :

>>> import os
>>> ? os.makedirs

1voto

siraj Points 25

Makedirs : Fonction de création récursive de répertoires. Comme mkdir(), mais crée tous les répertoires de niveau intermédiaire nécessaires pour contenir le répertoire feuille. Lève une exception d'erreur si le répertoire feuille existe déjà ou ne peut pas être créé.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X