Domanda

Sto cercando di creare una cartella e creare un file al suo interno.

Ogni volta che creo quella cartella (tramite Python), crea una cartella che non mi dà affatto autorizzazioni e modalità di sola lettura.

Quando provo a creare il file ottengo un IOError.

Error:  <type 'exceptions.IOError'>

Ho provato a creare (e cercare) una descrizione di tutte le altre modalità (oltre a 0770).

Qualcuno può darmi luce? Quali sono gli altri codici modalità?

È stato utile?

Soluzione

Dopo aver creato la cartella è possibile impostare le autorizzazioni con os.chmod

La mod è scritta in base 8, se la converti in binaria sarebbe

000 111 111 000
    rwx rwx rwx

Il primo rwx è per il proprietario, il secondo per il gruppo e il terzo per il mondo

r = lettura, w = scrivere, x = eseguire

Le autorizzazioni che vedi più spesso sono
7 leggi / scrivi / esegui - devi eseguire per le directory per vedere i contenuti
6 leggi / scrivi
4 di sola lettura

Quando usi os.chmod ha molto senso usare la notazione ottale così

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

Ricorda che ho detto che di solito vuoi che le directory siano " eseguibili " così puoi vedere i contenuti.

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

Nota: la sintassi di 0o777 è per Python 2.6 e 3+. altrimenti per la serie 2 è 0777 . 2.6 accetta la sintassi, quindi quella scelta dipenderà dal fatto che si desideri essere compatibile con le versioni precedenti o precedenti.

Altri suggerimenti

Probabilmente hai una umask funky. Prova os.umask (0002) prima di creare la tua directory.

Il manuale di Python dice:

os.mkdir(path[, mode])
     

Crea una directory denominata percorso con modalità modalità numerica. La modalità predefinita è 0777 (ottale). Su alcuni sistemi, la modalità viene ignorata. Dove viene utilizzato, il valore umask corrente viene prima mascherato. Disponibilità: Unix, Windows.

Hai specificato una modalità - quale modalità hai specificato. Hai considerato di specificare esplicitamente una modalità? E qual è il valore umask del programma impostato su "

Dato che sei su Windows, questo potrebbe essere un crapshoot. Assicurati che non ci siano autorizzazioni speciali stravaganti sulla directory principale o con le impostazioni dei criteri che definiscono le autorizzazioni ottenute da qualsiasi directory creata dal tuo account. Dubito che questo sia un problema di Python in quanto non sono stato in grado di ricreare il problema su Windows con un'installazione Vista relativamente vanilla.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top