Question

J'essaie de créer un dossier et d'y créer un fichier.

Chaque fois que je crée ce dossier (via Python), il crée un dossier qui ne me donne aucune autorisation et le mode lecture seule.

Quand j'essaie de créer le fichier, je reçois un IOError.

Error:  <type 'exceptions.IOError'>

J'ai essayé de créer (et de rechercher) une description de tous les autres modes (à part 0770).

Quelqu'un peut-il m'éclairer? Quels sont les autres codes de mode?

Était-ce utile?

La solution

Après avoir créé le dossier, vous pouvez définir les autorisations avec os.chmod

.

Le mod est écrit en base 8, si vous le convertissez en binaire, ce serait

000 111 111 000
    rwx rwx rwx

Le premier rwx est destiné au propriétaire, le second au groupe et le troisième au monde

r = lire, w = écrire, x = exécuter

Les autorisations que vous voyez le plus souvent sont
7 read / write / execute - vous devez exécuter execute pour les répertoires pour voir le contenu
6 lecture / écriture
4 en lecture seule

Lorsque vous utilisez os.chmod , il est logique d'utiliser la notation octale. alors

os.chmod('myfile',0o666)  # read/write by everyone
os.chmod('myfile',0o644)  # read/write by me, readable for everone else

N'oubliez pas que j'ai indiqué que vous souhaitiez généralement que les répertoires soient "exécutables". afin que vous puissiez voir le contenu.

os.chmod('mydir',0o777)  # read/write by everyone
os.chmod('mydir',0o755)  # read/write by me, readable for everone else

Remarque: la syntaxe de 0o777 concerne Python 2.6 et 3+. sinon, pour la série 2, il s'agit de 0777 . 2.6 accepte l'une ou l'autre syntaxe, donc celle que vous choisirez dépendra de votre compatibilité avec les versions antérieures ou ultérieures.

Autres conseils

Vous avez probablement un umask funky. Essayez os.umask (0002) avant de créer votre répertoire.

Le manuel Python dit:

os.mkdir(path[, mode])
     

Créez un répertoire nommé path avec le mode de mode numérique. Le mode par défaut est 0777 (octal). Sur certains systèmes, le mode est ignoré. Là où il est utilisé, la valeur actuelle de umask est d'abord masquée. Disponibilité: Unix, Windows.

Avez-vous spécifié un mode - quel mode avez-vous spécifié? Avez-vous envisagé de spécifier un mode explicitement? Et quelle est la valeur umask du programme définie sur "

Depuis votre Windows, cela pourrait être un crapshoot. Assurez-vous qu'il n'y a pas d'autorisations spéciales farfelues sur le répertoire parent ou avec les paramètres de stratégie qui définissent les autorisations que tous les répertoires créés par votre compte obtiennent. Je doute que ce soit un problème de python, car je n’ai pas été en mesure de le recréer sous Windows avec une installation relativement légère de Vista.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top