Python mkdir me da permisos incorrectos
-
06-07-2019 - |
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?
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.