web-dev-qa-db-fra.com

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

Je suis confus d'utiliser à propos de ces deux osméthodes pour créer le nouveau répertoire.

Veuillez me donner un exemple en Python.

38
Toni

makedirs()crée tous les répertoires intermédiaires s'ils n'existent pas (tout comme mkdir -p en 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 fonctionner ici si dirA existe déjà, mais si ce n'est pas le cas, une erreur sera générée.

Notez que contrairement à mkdir -p Dans bash, l'un ou l'autre échouera si la feuille existe déjà.

75
NPE

(Je ne peux pas commenter, il suffit d'ajouter à la réponse de NPE.)

En Python3, os.makedirs A un paramètre par défaut exist_ok=False.
Si vous le définissez sur True, alors os.makedirspas lèvera toute exception si la feuille existe.
(Bien que os.mkdir N'ait pas ce paramètre.)

Juste comme ça:

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

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

>>> import os
>>> ? os.makedirs
15
Yunqing Gong