Pregunta

Estoy intentando crear una carpeta y crear un archivo dentro de ella.

Cada vez que creo esa carpeta (a través de Python), crea una carpeta que no me da ningún permiso y modo de solo lectura.

Cuando intento crear el archivo obtengo un IOError.

Error:  <type 'exceptions.IOError'>

Intenté crear (y buscar) una descripción de todos los demás modos (además de 0770).

¿Alguien puede darme luz? ¿Cuáles son los otros códigos de modo?

¿Fue útil?

Solución

Después de crear la carpeta, puede establecer los permisos con os.chmod

El mod está escrito en la base 8, si lo convierte a binario sería

000 111 111 000
    rwx rwx rwx

El primer rwx es para el propietario, el segundo es para el grupo y el tercero es para el mundo

r = leer, w = escribir, x = ejecutar

Los permisos que ve con más frecuencia son
7 lectura / escritura / ejecución: necesita ejecutar para que los directorios vean el contenido
6 lectura / escritura
4 de solo lectura

Cuando usa os.chmod tiene más sentido usar la notación octal tan

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

Recuerda que dije que normalmente quieres que los directorios sean "ejecutables" para que pueda ver el contenido.

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

Nota: La sintaxis de 0o777 es para Python 2.6 y 3+. de lo contrario, para la serie 2 es 0777 . 2.6 acepta cualquiera de las sintaxis, por lo que la que elija dependerá de si desea ser compatible con versiones anteriores o posteriores.

Otros consejos

Probablemente tengas un umask funky. Pruebe os.umask (0002) antes de crear su directorio.

El manual de Python dice:

os.mkdir(path[, mode])
     

Cree un directorio llamado ruta con modo de modo numérico. El modo predeterminado es 0777 (octal). En algunos sistemas, el modo se ignora. Donde se usa, el valor actual de umask se enmascara primero. Disponibilidad: Unix, Windows.

¿Ha especificado un modo? ¿Qué modo especificó? ¿Consideró especificar un modo explícitamente? ¿Y cuál es el valor de umask del programa establecido en "

Dado que estás en Windows, esto podría ser una trampa. Asegúrese de que no haya permisos especiales extravagantes en el directorio principal o con la configuración de la política que define los permisos que obtienen los directorios creados por su cuenta. Dudo que este sea un problema de Python, ya que no he podido recrear el problema en Windows con una instalación de Vista relativamente vainilla.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top