65 votes

Problèmes d'autorisation lors de la création d'un répertoire avec os.makedirs en Python

J'essaie simplement de gérer un fichier téléchargé et de l'écrire dans un répertoire de travail dont le nom est l'horodatage du système. Le problème est que je veux créer ce répertoire avec une permission complète ( 777 ) mais je ne peux pas ! En utilisant le morceau de code suivant, le répertoire créé avec 755 autorisations.

 def handle_uploaded_file(upfile, cTimeStamp):
    target_dir = "path_to_my_working_dir/tmp_files/%s" % (cTimeStamp)
    os.makedirs(target_dir, mode=0777)

48voto

srgerg Points 8142

Selon la documentation officielle de Python, l'argument mode de la fonction os.makedirs peut être ignoré sur certains systèmes, et sur les systèmes où il n'est pas ignoré, la valeur umask actuelle est masquée.

Dans tous les cas, vous pouvez forcer le mode à 0o777 (0777 a généré une erreur de syntaxe) en utilisant la fonction os.chmod .

5voto

veben Points 597

Les autres réponses n'ont pas fonctionné pour moi (avec python 2.7 ).

J'ai dû ajouter os.umask(0) auparavant, pour supprimer le masque de l'utilisateur actuel. Et j'ai dû changer le mode de 0777 à 0o777 :

 def handle_uploaded_file(upfile, cTimeStamp):
    target_dir = "path_to_my_working_dir/tmp_files/%s" % (cTimeStamp)
    os.umask(0)
    os.makedirs(path, mode=0o777)

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