Pergunta

Eu estou tentando criar uma pasta e criar um arquivo dentro dela.

Sempre que eu criar essa pasta (via Python), ele cria uma pasta que me dá nenhuma permissão em tudo e modo somente leitura.

Quando tento criar o arquivo eu recebo um IOError.

Error:  <type 'exceptions.IOError'>

Eu tentei criar (e pesquisar) para uma descrição de todos os outros modos (além de 0770).

Alguém pode me dar a luz? Quais são os outros códigos modo?

Foi útil?

Solução

Depois de criar a pasta que você pode definir as permissões com os.chmod

O mod está escrito na base 8, se você convertê-lo para binário seria

000 111 111 000
    rwx rwx rwx

O primeiro rwx é para o proprietário, o segundo é para o grupo ea terceira é para o mundo

r = ler, w = escrita, x = executar

As permissões que você vê na maioria das vezes são
7 de leitura / gravação / execução - você precisa executar para diretórios para ver o conteúdo
6 de leitura / gravação
4 somente leitura

Quando você usa os.chmod faz mais sentido usar a notação octal assim

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

Lembre-se que eu disse que você normalmente querem diretórios para ser "executável" para que você possa ver o conteúdo.

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

Nota: A sintaxe de 0o777 é para Python 2.6 e 3+. de outra forma para os 2 série é 0777. 2.6 aceita tanto sintaxe de modo que o que você escolher vai depender se você quer ser frente ou para trás compatível.

Outras dicas

Você provavelmente já tem um umask funk. Tente os.umask(0002) antes de fazer o seu diretório.

O manual do Python diz:

os.mkdir(path[, mode])

Crie um diretório caminho chamado com o modo modo numérico. O modo padrão é 0777 (octal). Em alguns sistemas, o modo é ignorado. Onde é usado, o valor umask atual é primeiro mascaradas. Disponibilidade: Unix, Windows

.

Você já especificado um modo - o modo que você especificar. Você considerou especificar um modo explicitamente? E o que é o valor umask conjunto do programa para "

Uma vez que o seu no Windows, isso pode ser um jogo de dados. Certifique-se de que não existem quaisquer permissões especiais malucos no diretório pai ou com as definições de política que define as permissões quaisquer diretórios criados por sua conta get. Eu duvido que este é um problema python como eu não tenho sido capaz de recriar o problema no Windows com um baunilha Vista relativamente instalar.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top