os
— Interfaces misceláneas del sistema operativo¶
Código fuente: Lib/os.py
Este módulo provee una manera versátil de usar funcionalidades dependientes del sistema operativo. Si quieres leer o escribir un archivo mira open()
, si quieres manipular rutas, mira el módulo os.path
, y si quieres leer todas las líneas en todos los archivos en la línea de comandos mira el módulo fileinput
. Para crear archivos temporales y directorios mira el módulo tempfile
, y para el manejo de alto nivel de archivos y directorios puedes ver el módulo shutil
.
Notas sobre la disponibilidad de estas funciones:
El diseño de todos los módulos incorporados de Python dependientes del sistema operativo es tal que, mientras funcionalidad esté disponible, usará la misma interfaz; por ejemplo, la función
os.stat(path)
retorna estadísticas sobre la ruta (path) en el mismo formato (lo que sucede originalmente con la interfaz POSIX).Las extensiones propias de un sistema operativo en particular también están disponibles a través del módulo
os
, pero usarlas, por supuesto, es un riesgo a la portabilidad.Todas las funciones que aceptan rutas o nombres de archivos aceptan bytes o cadenas de texto, y el resultado es un objeto del mismo tipo, siempre que se retorna una ruta o un archivo.
En VxWorks, os.popen, os.fork, os.execv y os.spawn*p* no son compatibles.
En las plataformas WebAssembly, Android e iOS, gran parte del módulo
os
no está disponible o se comporta de forma diferente. Las API relacionadas con los procesos (p. ej.,fork()
,execve()
) y los recursos (p. ej.,nice()
) no están disponibles. Otras, comogetuid()
ygetpid()
, se emulan o son stubs. Las plataformas WebAssembly también carecen de compatibilidad con señales (p. ej.,kill()
,wait()
).
Nota
Todas las funciones en este módulo lanzan OSError
(o subclases), en el caso de archivos o rutas inaccesibles o inválidas, u otros argumentos que tienen el tipo correcto, pero que no son aceptados por el sistema operativo.
- os.name¶
El nombre del módulo dependiente del sistema operativo importado. Los siguientes nombres están registrados:
'posix'
,'nt'
,'java'
.Ver también
sys.platform
tiene una granularidad más fina.os.uname()
proporciona información de versión dependiente del sistema.El módulo
platform
proporciona verificaciones detalladas de la identidad del sistema.
Nombres de archivos, argumentos de la línea de comandos y variables de entorno¶
En Python, los nombres de archivo, los argumentos de la línea de comandos y las variables de entorno se representan mediante el tipo de cadena de caracteres. En algunos sistemas, es necesario decodificar estas cadenas desde y hacia bytes antes de pasarlas al sistema operativo. Python usa la codificación del sistema de archivos y manejador de errores para realizar esta conversión (consulte sys.getfilesystemencoding()
).
La codificación del sistema de archivos y manejador de errores se configuran al inicio de Python mediante la función PyConfig_Read()
: consulte los miembros filesystem_encoding
y filesystem_errors
de PyConfig
.
Distinto en la versión 3.1: En algunos sistemas, la conversión mediante la codificación del sistema de archivos puede fallar. En este caso, Python utiliza surrogateescape encoding error handler, lo que significa que los bytes no decodificables se reemplazan por un carácter Unicode U+DCxx durante la decodificación y estos se traducen nuevamente al byte original durante la codificación.
La codificación del sistema de archivos y manejador de errores debe garantizar la decodificación exitosa de todos los bytes por debajo de 128. Si la codificación del sistema de archivos no proporciona esta garantía, las funciones de API pueden generar UnicodeError
.
Consulte también la codificación de la configuración regional.
Modo Python UTF-8¶
Added in version 3.7: Consulte PEP 540 para obtener más detalles.
El modo Python UTF-8 ignora la codificación de la configuración regional y fuerza el uso de la codificación UTF-8:
Utilice UTF-8 como codificación del sistema de archivos y manejador de errores.
sys.getfilesystemencoding()
retorna'utf-8'
.locale.getpreferredencoding()
retorna'utf-8'
(el argumento do_setlocale no tiene ningún efecto).sys.stdin
,sys.stdout
ysys.stderr
usan UTF-8 como su codificación de texto, consurrogateescape
error handler habilitado parasys.stdin
ysys.stdout
(sys.stderr
continúa usandobackslashreplace
como lo hace en el modo predeterminado de reconocimiento de configuración regional)En Unix,
os.device_encoding()
retorna'utf-8'
. en lugar de la codificación del dispositivo.
Tenga en cuenta que PYTHONIOENCODING
puede anular la configuración de transmisión estándar en el modo UTF-8 (al igual que en el modo predeterminado con reconocimiento de configuración regional).
Como consecuencia de los cambios en esas API de nivel inferior, otras API de nivel superior también exhiben diferentes comportamientos predeterminados:
Los argumentos de la línea de comandos, las variables de entorno y los nombres de archivo se decodifican en texto utilizando la codificación UTF-8.
os.fsdecode()
yos.fsencode()
utilizan la codificación UTF-8.open()
,io.open()
ycodecs.open()
utilizan la codificación UTF-8 de forma predeterminada. Sin embargo, todavía usan el controlador de errores estricto de forma predeterminada, por lo que es probable que intentar abrir un archivo binario en modo texto genere una excepción en lugar de producir datos sin sentido.
El Modo Python UTF-8 se habilita si la configuración regional LC_CTYPE es C
o POSIX
al iniciar Python (consulte la función PyConfig_Read()
).
Se puede habilitar o deshabilitar usando la opción de línea de comando -X utf8
y la variable de entorno PYTHONUTF8
.
Si la variable de entorno PYTHONUTF8
no está configurada en absoluto, entonces el intérprete utiliza de forma predeterminada la configuración regional actual, a no ser que la configuración regional actual se identifica como una configuración regional heredada basada en ASCII (como se describe para PYTHONCOERCECLOCALE
) y la coerción de la configuración regional está deshabilitada o falla . En tales configuraciones regionales heredadas, el intérprete habilitará de forma predeterminada el modo UTF-8 a menos que se le indique explícitamente que no lo haga.
El modo Python UTF-8 solo se puede habilitar al inicio de Python. Su valor se puede leer en sys.flags.utf8_mode
.
Consulte también modo UTF-8 en Windows y codificación del sistema de archivos y manejador de errores.
Ver también
- PEP 686
Python 3.15 hará que Modo Python UTF-8 sea el predeterminado.
Parámetros de proceso¶
Estas funciones y elementos de datos proporcionan información y operan en el proceso y con el usuario actuales.
- os.ctermid()¶
Retorna el nombre del archivo correspondiente al terminal que controla el proceso.
Availability: Unix, not WASI.
- os.environ¶
Un objeto mapping donde las claves y los valores son cadenas que representan el entorno del proceso. Por ejemplo,
environ['HOME']
es el nombre de ruta de su directorio de inicio (en algunas plataformas) y es equivalente agetenv("HOME")
en C.Esta asignación se captura la primera vez que se importa el módulo
os
, normalmente durante el inicio de Python como parte del procesamiento desite.py
. Los cambios en el entorno realizados después de este tiempo no se reflejan enos.environ
, excepto los cambios realizados modificandoos.environ
directamente.Este mapeo puede ser usado para modificar el entorno y también para consultarlo.
putenv()
será llamado automáticamente cuando el mapeo sea modificado.En Unix, claves y valores usan la función
sys.getfilesystemencoding()
y el controlador de errores'surrogateescape'
. Hay que utilizarenvironb
si se quiere usar una codificación diferente.En Windows, las claves se convierten a mayúsculas. Esto también se aplica al obtener, configurar o eliminar un elemento. Por ejemplo,
environ['monty'] = 'python'
asigna a la clave'MONTY'
el valor'python'
.Nota
Llamar a
putenv()
directamente no cambiaos.environ
, por lo que es mejor modificaros.environ
.Nota
En algunas plataformas, incluidas FreeBSD y macOS, configurar
environ
puede provocar pérdidas de memoria. Consulte la documentación del sistema paraputenv()
.Puede eliminar elementos en esta asignación para desactivar las variables de entorno.
unsetenv()
se llamará automáticamente cuando se elimine un elemento deos.environ
y cuando se llame a uno de los métodospop()
oclear()
.Ver también
The
os.reload_environ()
function.Distinto en la versión 3.9: Actualizado para soportar los operadores merge (
|
) y update (|=
) de PEP 584’s.
- os.environb¶
Versión de bytes de
environ
: un objeto mapping donde tanto las claves como los valores son objetosbytes
que representan el entorno del proceso.environ
yenvironb
están sincronizados (modificandoenvironb
actualizaenviron
, y viceversa).environb
está disponible sólo sisupports_bytes_environ
está establecido enTrue
.Added in version 3.2.
Distinto en la versión 3.9: Actualizado para soportar los operadores merge (
|
) y update (|=
) de PEP 584’s.
- os.reload_environ()¶
The
os.environ
andos.environb
mappings are a cache of environment variables at the time that Python started. As such, changes to the current process environment are not reflected if made outside Python, or byos.putenv()
oros.unsetenv()
. Useos.reload_environ()
to updateos.environ
andos.environb
with any such changes to the current process environment.Advertencia
This function is not thread-safe. Calling it while the environment is being modified in an other thread is an undefined behavior. Reading from
os.environ
oros.environb
, or callingos.getenv()
while reloading, may return an empty result.Added in version 3.14.
- os.chdir(path)
- os.fchdir(fd)
- os.getcwd()
Estas funciones están detalladas en Archivos y directorios.
- os.fsencode(filename)¶
Codifique path-like filename en filesystem encoding and error handler; retorna
bytes
sin cambios.fsdecode()
es la función inversa.Added in version 3.2.
Distinto en la versión 3.6: Soporte agregado para aceptar objetos que implementan una interfaz
os.PathLike
.
- os.fsdecode(filename)¶
Decodifica el path-like filename del filesystem encoding and error handler; retorna
str
sin cambios.fsencode()
es la función inversa.Added in version 3.2.
Distinto en la versión 3.6: Soporte agregado para aceptar objetos que implementan una interfaz
os.PathLike
.
- os.fspath(path)¶
Retorna la representación en el sistema de archivos de la ruta.
Si se le pasa
str
obytes
, retorna sin alterar. De lo contrario se llama a__fspath__()
y se retorna su valor siempre que sea un objetostr
obytes
. En los demás casos se lanza una excepción del tipoTypeError
.Added in version 3.6.
- class os.PathLike¶
Una clase base abstracta para objetos que representan una ruta del sistema de archivos, i.e.
pathlib.PurePath
.Added in version 3.6.
- os.getenv(key, default=None)¶
Devuelve el valor de la variable de entorno key como una cadena si existe, o default si no existe. key es una cadena. Tenga en cuenta que dado que
getenv()
usaos.environ
, la asignación degetenv()
también se captura de manera similar en la importación, y es posible que la función no refleje futuros cambios en el entorno.En Unix, claves y valores se decodifican con la función
sys.getfilesystemencoding()
y con el controlador de errores'surrogateescape'
. Usaros.getenvb()
si se quiere usar una codificación diferente.Availability: Unix, Windows.
- os.getenvb(key, default=None)¶
Devuelve el valor de la variable de entorno key como bytes si existe, o default si no existe. key debe ser bytes. Tenga en cuenta que dado que
getenvb()
usaos.environb
, la asignación degetenvb()
también se captura de manera similar en la importación, y es posible que la función no refleje futuros cambios en el entorno.getenvb()
está disponible sólo sisupports_bytes_environ
está establecido enTrue
.Availability: Unix.
Added in version 3.2.
- os.get_exec_path(env=None)¶
Retorna una lista de directorios en la que se buscará un ejecutable, similar a una shell, cuando se ejecuta un proceso. env, cuando se especifica, tienen que ser un diccionario de variables de entorno donde buscar el PATH. Por defecto cuando env es
None
, se usaenviron
.Added in version 3.2.
- os.getegid()¶
Retorna el id del grupo (gid) efectivo correspondiente al proceso que se está ejecutando. Esto corresponde al bit de «set id» en el archivo que se está ejecutando en el proceso actual.
Availability: Unix, not WASI.
- os.geteuid()¶
Retorna el id el usuario correspondiente al proceso que se está ejecutando actualmente.
Availability: Unix, not WASI.
- os.getgid()¶
Retorna el id del grupo real correspondiente al proceso que se está ejecutando actualmente.
Availability: Unix.
La función es un «stub» de WASI, consulte Plataformas WebAssembly para obtener más información.
- os.getgrouplist(user, group, /)¶
Devuelve la lista de ID de grupo a los que pertenece user. Si group no está en la lista, se incluye; normalmente, group se especifica como el campo de ID de grupo del registro de contraseña para user, porque de lo contrario, esa ID de grupo podría omitirse.
Availability: Unix, not WASI.
Added in version 3.3.
- os.getgroups()¶
Retorna la lista de ids de grupos secundarios asociados con el proceso actual.
Availability: Unix, not WASI.
Nota
En macOS, el comportamiento de
getgroups()
difiere un poco del de otras plataformas Unix. Si el intérprete de Python se creó con un objetivo de implementación10.5
o anterior,getgroups()
devuelve la lista de identificadores de grupo efectivos asociados con el proceso de usuario actual; esta lista está limitada a una cantidad de entradas definida por el sistema, normalmente 16, y puede modificarse mediante llamadas asetgroups()
si se cuenta con los privilegios adecuados. Si se creó con un objetivo de implementación mayor que10.5
,getgroups()
devuelve la lista de acceso de grupo actual para el usuario asociado con el identificador de usuario efectivo del proceso; la lista de acceso de grupo puede cambiar durante la vida útil del proceso, no se ve afectada por las llamadas asetgroups()
y su longitud no está limitada a 16. El valor del objetivo de implementación,MACOSX_DEPLOYMENT_TARGET
, se puede obtener consysconfig.get_config_var()
.
- os.getlogin()¶
Retorna el nombre del usuario que inició sesión en el terminal que controla el proceso. Para la mayoría de los casos, es más útil usar
getpass.getuser()
ya que este último verifica las variables de entornoLOGNAME
oUSERNAME
para averiguar quién es el usuario y recurre apwd.getpwuid(os.getuid())[0]
para obtener el nombre de inicio de sesión del ID de usuario real actual.Availability: Unix, Windows, not WASI.
- os.getpgid(pid)¶
Retorna el id del grupo de procesos del proceso con la identificación del proceso pid. Si pid es 0, se retorna la identificación del grupo de proceso del proceso actual.
Availability: Unix, not WASI.
- os.getpgrp()¶
Retorna el id del grupo de proceso actual.
Availability: Unix, not WASI.
- os.getpid()¶
Retorna el id del proceso actual.
La función es un «stub» de WASI, consulte Plataformas WebAssembly para obtener más información.
- os.getppid()¶
Retorna el id del proceso del padre. Cuando el proceso padre ha terminado, en Unix la identificación que retorna es la del proceso init (1), en Windows sigue siendo la misma identificación, que ya puede ser reutilizada por otro proceso.
Availability: Unix, Windows, not WASI.
Distinto en la versión 3.2: Se agregó soporte para Windows.
- os.getpriority(which, who)¶
Obtenga la prioridad del programa. El valor which es uno de
PRIO_PROCESS
,PRIO_PGRP
, oPRIO_USER
, y who se interpreta en relación a which (un identificador de proceso paraPRIO_PROCESS
, un identificador de grupo de proceso paraPRIO_PGRP
, y un ID de usuario paraPRIO_USER
). Un valor cero para who denota (respectivamente) el proceso llamado, el grupo de proceso del proceso llamado o el ID de usuario real del proceso llamado.Availability: Unix, not WASI.
Added in version 3.3.
- os.PRIO_PROCESS¶
- os.PRIO_PGRP¶
- os.PRIO_USER¶
Parámetros para las funciones
getpriority()
ysetpriority()
.Availability: Unix, not WASI.
Added in version 3.3.
- os.PRIO_DARWIN_THREAD¶
- os.PRIO_DARWIN_PROCESS¶
- os.PRIO_DARWIN_BG¶
- os.PRIO_DARWIN_NONUI¶
Parámetros para las funciones
getpriority()
ysetpriority()
.Availability: macOS
Added in version 3.12.
- os.getresuid()¶
Retorna una tupla (ruid, euid, suid) que denota los ID de usuario reales, efectivos y guardados del proceso actual.
Availability: Unix, not WASI.
Added in version 3.2.
- os.getresgid()¶
Retorna una tupla (rgid, egid, sgid) que denota los ID de grupo reales, efectivos y guardados del proceso actual.
Availability: Unix, not WASI.
Added in version 3.2.
- os.getuid()¶
Retorna el id del usuario real del proceso actual.
Availability: Unix.
La función es un «stub» de WASI, consulte Plataformas WebAssembly para obtener más información.
- os.initgroups(username, gid, /)¶
Llamada al sistema initgroups() para inicializar la lista de acceso de grupo con todos los grupos de los que es miembro el nombre de usuario especificado, más el ID del grupo especificado.
Availability: Unix, not WASI, not Android.
Added in version 3.2.
- os.putenv(key, value, /)¶
Establece la variable de entorno llamada key con el valor de la cadena value. Dichos cambios en el entorno impactan a los subprocesos iniciados con
os.system()
,popen()
ofork()
yexecv()
.Las asignaciones a elementos en
os.environ
se traducen automáticamente en llamadas correspondientes aputenv()
; sin embargo, las llamadas aputenv()
no actualizanos.environ
, por lo que en realidad es preferible asignar elementos deos.environ
. Esto también se aplica agetenv()
ygetenvb()
, que utilizan respectivamenteos.environ
yos.environb
en sus implementaciones.See also the
os.reload_environ()
function.Nota
En algunas plataformas, incluidas FreeBSD y macOS, la configuración de
environ
puede provocar pérdidas de memoria. Consulta la documentación del sistema para obtener información sobreputenv()
.Lanza un evento de auditoría
os.putenv
con argumentoskey
,value
.Distinto en la versión 3.9: Esta función actualmente siempre esta disponible.
- os.setegid(egid, /)¶
Establece el id de grupo efectivo del proceso actual.
Availability: Unix, not WASI, not Android.
- os.seteuid(euid, /)¶
Establece el id de usuario efectivo del proceso actual.
Availability: Unix, not WASI, not Android.
- os.setgid(gid, /)¶
Establece el id de grupo del proceso actual.
Availability: Unix, not WASI, not Android.
- os.setgroups(groups, /)¶
Establece la lista de ids de grupos secundarios asociados con el proceso actual en groups. groups debe ser una secuencia y cada elemento debe ser un número entero que identifique un grupo. Esta operación generalmente está disponible sólo para el superusuario.
Availability: Unix, not WASI.
Nota
En macOS, la longitud de groups no puede exceder el número máximo definido por el sistema de ID de grupo efectivos, por lo general 16. Consulte la documentación de
getgroups()
para ver los casos en los que puede no retornar la misma lista de grupos establecida llamando a setgroups().
- os.setns(fd, nstype=0)¶
Reasociar el hilo actual con un espacio de nombres de Linux. Consulta las páginas del manual setns(2) y namespaces(7) para obtener más detalles.
Si fd hace referencia a un enlace
/proc/pid/ns/
,setns()
reasocia el hilo que llama con el espacio de nombres asociado con ese enlace, y nstype puede configurarse en uno de los CLONE_NEW* constants para imponer restricciones a la operación (0
significa sin restricciones).Desde Linux 5.8, fd puede hacer referencia a un descriptor de archivo PID obtenido de
pidfd_open()
. En este caso,setns()
reasocia el subproceso que realiza la llamada en uno o más de los mismos espacios de nombres que el subproceso al que hace referencia fd. Esto está sujeto a las restricciones impuestas por nstype, que es una máscara de bits que combina uno o más de los CLONE_NEW* constants, por ejemplo,setns(fd, os.CLONE_NEWUTS | os.CLONE_NEWPID)
. Las pertenencias del autor de la llamada a espacios de nombres no especificados no se modifican.fd puede ser cualquier objeto con un método
fileno()
o un descriptor de archivo sin formato.Este ejemplo reasocia el hilo con el espacio de nombres de red del proceso
init
:fd = os.open("/proc/1/ns/net", os.O_RDONLY) os.setns(fd, os.CLONE_NEWNET) os.close(fd)
Availability: Linux >= 3.0 with glibc >= 2.14.
Added in version 3.12.
Ver también
La función
unshare()
.
- os.setpgrp()¶
Llama a la llamada del sistema
setpgrp()
osetpgrp(0, 0)
según la versión implementada (si hay alguna). Consulte el manual de Unix para conocer la semántica.Availability: Unix, not WASI.
- os.setpgid(pid, pgrp, /)¶
Llama a la llamada del sistema
setpgid()
para establecer el ID del grupo de procesos del proceso con el ID pid en el grupo de procesos con el ID pgrp. Consulte el manual de Unix para conocer la semántica.Availability: Unix, not WASI.
- os.setpriority(which, who, priority)¶
Establecer la prioridad del programa. El valor which es uno de
PRIO_PROCESS
,PRIO_PGRP
, oPRIO_USER
, y who se interpreta en relación con which (un identificador de proceso paraPRIO_PROCESS
, un identificador de grupo de proceso paraPRIO_PGRP
, y un ID de usuario paraPRIO_USER
). Un valor cero para who denota (respectivamente) el proceso llamado, el grupo de procesos del proceso llamado o el ID del usuario real del proceso llamado. priority es un valor en el rango de -20 a 19. La prioridad predeterminada es 0; las prioridades más bajas causan una programación más favorable.Availability: Unix, not WASI.
Added in version 3.3.
- os.setregid(rgid, egid, /)¶
Establece los ids de grupos reales y efectivos del proceso actual.
Availability: Unix, not WASI, not Android.
- os.setresgid(rgid, egid, sgid, /)¶
Establece los ids de grupo reales, efectivos y guardados del proceso actual.
Availability: Unix, not WASI, not Android.
Added in version 3.2.
- os.setresuid(ruid, euid, suid, /)¶
Establece los ids de usuario reales, efectivos y guardados del proceso actual.
Availability: Unix, not WASI, not Android.
Added in version 3.2.
- os.setreuid(ruid, euid, /)¶
Establece los ids de usuario reales y efectivos del proceso actual.
Availability: Unix, not WASI, not Android.
- os.getsid(pid, /)¶
Llamar a la llamada del sistema
getsid()
. Consultar el manual de Unix para conocer la semántica.Availability: Unix, not WASI.
- os.setsid()¶
Llamar a la llamada del sistema
setsid()
. Consultar el manual de Unix para conocer la semántica.Availability: Unix, not WASI.
- os.setuid(uid, /)¶
Establece id del usuario del proceso actual.
Availability: Unix, not WASI, not Android.
- os.strerror(code, /)¶
Devuelve el mensaje de error correspondiente al código de error en code. En las plataformas donde
strerror()
devuelveNULL
cuando se le asigna un número de error desconocido, se generaValueError
.
- os.supports_bytes_environ¶
True
si el tipo de entorno nativo del sistema operativo es bytes (por ejemplo,False
en Windows).Added in version 3.2.
- os.umask(mask, /)¶
Establece la umask numérica actual y retorna la umask anterior.
La función es un «stub» de WASI, consulte Plataformas WebAssembly para obtener más información.
- os.uname()¶
Retorna información que identifica el sistema operativo actual. El valor retornado es un objeto con cinco atributos:
sysname
- nombre del sistema operativonodename
- nombre de la máquina en la red (definida por la implementación)release
- release del sistema operativoversion
- versión del sistema operativomachine
- identificador de hardware
Por compatibilidad con versiones anteriores, este objeto también es iterable, se comporta como una tupla que contiene
sysname
,nodename
,release
,version
, ymachine
en ese orden.Algunos sistemas se truncan
nodename
a 8 caracteres o al componente principal; una mejor manera de obtener el nombre de host es usarsocket.gethostname()
o inclusosocket.gethostbyaddr(socket.gethostname())
.En macOS, iOS y Android, esto devuelve el nombre y la versión de kernel (es decir,
'Darwin'
en macOS e iOS;'Linux'
en Android).platform.uname()
se puede utilizar para obtener el nombre y la versión del sistema operativo que ven los usuarios en iOS y Android.Availability: Unix.
Distinto en la versión 3.3: El tipo de objeto retornado cambió de una tupla a un objeto tipo tupla con atributos con nombre.
- os.unsetenv(key, /)¶
Desestablece (elimine) la variable de entorno llamada key. Dichos cambios en el entorno afectan a los subprocesos iniciados con
os.system()
,popen()
ofork()
yexecv()
.La eliminación de elementos en
os.environ
se traduce automáticamente en una llamada correspondiente aunsetenv()
; sin embargo, las llamadas aunsetenv()
no actualizanos.environ
, por lo que en realidad es preferible eliminar elementos deos.environ
.See also the
os.reload_environ()
function.Lanza un evento de auditoría
os.unsetenv
con argumentokey
.Distinto en la versión 3.9: Estas funciones se encuentra ahora siempre disponible y también esta disponible en Windows.
Desasociar partes del contexto de ejecución del proceso y moverlas a un nuevo espacio de nombres creado. Consulte la página del manual unshare(2) para obtener más detalles. El argumento flags es una máscara de bits que combina cero o más de los CLONE_* constants y que especifica qué partes del contexto de ejecución deben dejar de compartirse de sus asociaciones existentes y moverse a un nuevo espacio de nombres. Si el argumento flags es
0
, no se realizan cambios en el contexto de ejecución del proceso que realiza la llamada.Availability: Linux >= 2.6.16.
Added in version 3.12.
Ver también
La función
setns()
.
Creación de objetos de tipo archivo¶
Estas funciones crean nuevos objetos de archivo. (Consulte también open()
para abrir los descriptores de archivos).
Operaciones de descriptores de archivos¶
Estas funciones operan en flujos de E/S a los que se hace referencia mediante descriptores de archivo.
Los descriptores de archivo son enteros pequeños que corresponden a un archivo que ha sido abierto por el proceso actual. Por ejemplo, la entrada estándar suele ser el descriptor de archivo 0, la salida estándar es el 1 y el error estándar es el 2. A los archivos abiertos por un proceso se les asignará 3, 4, 5, y así sucesivamente. El nombre «descriptor de archivo» es ligeramente engañoso; en las plataformas Unix, los descriptores de archivo también hacen referencia a sockets y tuberías.
El método fileno()
se puede utilizar para obtener el descriptor de archivo asociado con un file object cuando sea necesario. Tenga en cuenta que el uso del descriptor de archivo directamente omitirá los métodos de objeto de archivo, ignorando aspectos como el almacenamiento interno interno de datos.
- os.close(fd)¶
Cierra el descriptor de archivo fd.
- os.closerange(fd_low, fd_high, /)¶
Cierra todos los descriptores de archivo desde fd_low (inclusive) hasta fd_high (exclusivo), ignorando los errores. Equivalente a (pero mucho más rápido que):
for fd in range(fd_low, fd_high): try: os.close(fd) except OSError: pass
- os.copy_file_range(src, dst, count, offset_src=None, offset_dst=None)¶
Copiar bytes count desde el descriptor de archivo src, comenzando desde el desplazamiento offset_src, al descriptor de archivo dst, comenzando desde el desplazamiento offset_dst. Si offset_src es
None
, entonces src se lee desde la posición actual; respectivamente para offset_dst.En un kernel de Linux anterior a 5.3, los archivos a los que apuntan src y dst deben residir en el mismo sistema de archivos; de lo contrario, se genera un
OSError
conerrno
establecido enerrno.EXDEV
.Esta copia se realiza sin el costo adicional de transferir datos desde el núcleo al espacio de usuario y luego de vuelta al núcleo. Además, algunos sistemas de archivos podrían implementar optimizaciones adicionales, como el uso de enlaces de referencia (es decir, dos o más inodos que comparten punteros a los mismos bloques de disco de copia en escritura; los sistemas de archivos compatibles incluyen btrfs y XFS) y copia del lado del servidor (en el caso de NFS).
La función copia bytes entre dos descriptores de archivo. Las opciones de texto, como la codificación y el final de línea, se ignoran.
El valor de retorno es la cantidad de bytes copiados. Esto podría ser menor que la cantidad solicitada.
Nota
En Linux, no se debe utilizar
os.copy_file_range()
para copiar un rango de un pseudoarchivo desde un sistema de archivos especial como procfs y sysfs. Siempre no copiará ningún byte y devolverá 0 como si el archivo estuviera vacío debido a un problema conocido del kernel de Linux.Availability: Linux >= 4.5 with glibc >= 2.27.
Added in version 3.8.
- os.device_encoding(fd)¶
Retorna una cadena que describe la codificación del dispositivo asociado con fd si está conectado a una terminal; sino retorna
None
.En Unix, si el Modo Python UTF-8 está habilitado, retorna
'UTF-8'
en lugar de la codificación del dispositivo.Distinto en la versión 3.10: En Unix, la función ahora implementa el modo Python UTF-8.
- os.dup(fd, /)¶
Retorna un duplicado del descriptor de archivo fd. El nuevo descriptor de archivo es no heredable.
En Windows, al duplicar un flujo estándar (0: stdin, 1: stdout, 2: stderr), el nuevo descriptor de archivo es heredable.
Availability: not WASI.
Distinto en la versión 3.4: El nuevo descriptor de archivo ahora es no heredable.
- os.dup2(fd, fd2, inheritable=True)¶
Duplicar el descriptor de archivo fd a fd2, cerrando el anterior si es necesario. Retorna fd2. El nuevo descriptor de archivo es heredable por defecto o no heredable si inheritable es
False
.Availability: not WASI.
Distinto en la versión 3.4: Agrega el parámetro opcional inheritable.
Distinto en la versión 3.7: Retorna fd2 en caso de éxito. Anteriormente se retornaba siempre
None
.
- os.fchmod(fd, mode)¶
Cambia el modo del archivo dado por fd al modo numérico mode. Consulte los documentos para
chmod()
para conocer los posibles valores de mode. A partir de Python 3.3, esto es equivalente aos.chmod(fd, mode)
.Lanza un evento de auditoría
os.chmod
con argumentospath
,mode
,dir_fd
.Availability: Unix, Windows.
La función está limitada en WASI, consulte Plataformas WebAssembly para obtener más información.
Distinto en la versión 3.13: Se agregó soporte en Windows.
- os.fchown(fd, uid, gid)¶
Cambia el propietario y el id del grupo del archivo proporcionado por fd a los numéricos dados por uid y gid. Para dejar uno de los identificadores sin cambios, configúrelo en -1. Ver
chown()
. A partir de Python 3.3, esto es equivalente aos.chown(fd, uid, gid)
.Lanza un evento de auditoría
os.chown
con argumentospath
,uid
,gid
,dir_fd
.Availability: Unix.
La función está limitada en WASI, consulte Plataformas WebAssembly para obtener más información.
- os.fdatasync(fd)¶
Fuerza la escritura del archivo con el descriptor de archivo fd en el disco. No fuerza la actualización de metadatos.
Availability: Unix.
Nota
Esta función no está disponible en MacOS.
- os.fpathconf(fd, name, /)¶
Retorna la información de configuración del sistema relevante para un archivo abierto. name especifica el valor de configuración para recuperar; puede ser una cadena que es el nombre de un valor de sistema definido; estos nombres se especifican en varios estándares (POSIX.1, Unix 95, Unix 98 y otros). Algunas plataformas también definen nombres adicionales. Los nombres conocidos por el sistema operativo anfitrión se dan en el diccionario
pathconf_names
. Para las variables de configuración no incluidas en esa asignación, también se acepta pasar un número entero para name.Si name es una cadena y no se conoce, se lanza un
ValueError
. Si el sistema anfitrión no admite un valor específico para name, incluso si está incluido enpathconf_names
, se genera unOSError
conerrno.EINVAL
para el número de error.A partir de Python 3.3, esto es equivalente a
os.pathconf(fd, name)
.Availability: Unix.
- os.fstat(fd)¶
Obtiene el estado del descriptor de archivo fd. Retorna un objeto
stat_result
.A partir de Python 3.3, esto es equivalente a
os.stat(fd)
.Ver también
La función
stat()
.
- os.fstatvfs(fd, /)¶
Retorna información sobre el sistema de archivos que contiene el archivo asociado con el descriptor de archivo fd, como
statvfs()
. A partir de Python 3.3, esto es equivalente aos.statvfs(fd)
.Availability: Unix.
- os.fsync(fd)¶
Fuerza la escritura de un archivo con el descriptor de archivo fd en el disco. En Unix, esto llama a la función
fsync()
nativa; en Windows, a la función_commit()
de MS.Si está comenzando con un Python almacenado en búfer file object f, primero haga
f.flush()
, y luego hagaos.fsync(f.fileno())
, para garantizar que todas las memorias intermedias internas asociadas con f se escriban en disco.Availability: Unix, Windows.
- os.ftruncate(fd, length, /)¶
Trunca el archivo correspondiente al descriptor de archivo fd, para que tenga como máximo length bytes de tamaño. A partir de Python 3.3, esto es equivalente a
os.truncate(fd, length)
.Lanza un evento de auditoría
os.truncate
con argumentosfd
,length
.Availability: Unix, Windows.
Distinto en la versión 3.5: Se agregó soporte para Windows
- os.get_blocking(fd, /)¶
Obtiene el modo de bloqueo del descriptor de archivo:
False
si se establece el indicadorO_NONBLOCK
,True
si el indicador se borra.Consulte también
set_blocking()
ysocket.socket.setblocking()
.Availability: Unix, Windows.
La función está limitada en WASI, consulte Plataformas WebAssembly para obtener más información.
En Windows, esta función está limitada a las tuberías.
Added in version 3.5.
Distinto en la versión 3.12: Se agregó soporte para pipes en Windows.
- os.grantpt(fd, /)¶
Otorgar acceso al dispositivo pseudoterminal esclavo asociado con el dispositivo pseudoterminal maestro al que hace referencia el descriptor de archivo fd. El descriptor de archivo fd no se cierra en caso de falla.
Llama a la función de la biblioteca estándar C
grantpt()
.Availability: Unix, not WASI.
Added in version 3.13.
- os.isatty(fd, /)¶
Retorna
True
si el descriptor de archivo fd está abierto y conectado a un dispositivo tipo tty, de lo contrario,False
.
- os.lockf(fd, cmd, len, /)¶
Aplique, pruebe o elimine un bloqueo POSIX en un descriptor de archivo abierto. fd es un descriptor de archivo abierto. cmd especifica el comando a usar - uno de
F_LOCK
,F_TLOCK
,F_ULOCK
oF_TEST
. len especifica la sección del archivo a bloquear.Lanza un evento de auditoría
os.lockf
con argumentosfd
,cmd
,len
.Availability: Unix.
Added in version 3.3.
- os.F_LOCK¶
- os.F_TLOCK¶
- os.F_ULOCK¶
- os.F_TEST¶
Indicadores que especifican qué acción tomará
lockf()
.Availability: Unix.
Added in version 3.3.
- os.login_tty(fd, /)¶
Prepare el tty del cual fd es un descriptor de archivo para una nueva sesión de inicio de sesión. Convierta el proceso de convocatoria en un líder de sesión; hacer que el tty sea el tty controlador, el stdin, el stdout y el stderr del proceso de llamada; cerrar fd.
Availability: Unix, not WASI.
Added in version 3.11.
- os.lseek(fd, pos, whence, /)¶
Establece la posición actual del descriptor de archivo fd en la posición pos, modificada por whence, y devuelve la nueva posición en bytes con respecto al inicio del archivo. Los valores válidos para whence son:
SEEK_SET
o0
: establece pos en relación con el comienzo del archivoSEEK_CUR
o1
: establece pos en relación con la posición actual del archivoSEEK_END
o2
: establece pos en relación con el final del archivoSEEK_HOLE
: establece pos en la siguiente ubicación de datos, relativa a posSEEK_DATA
: establece pos en el siguiente agujero de datos, relativo a pos
Distinto en la versión 3.3: Añadir soporte para
SEEK_HOLE
ySEEK_DATA
.
- os.SEEK_SET¶
- os.SEEK_CUR¶
- os.SEEK_END¶
Parámetros de la función
lseek()
y del métodoseek()
en file-like objects, para desde donde ajustar el indicador de posición del archivo.SEEK_SET
Ajuste la posición del archivo en relación con el comienzo del archivo.
SEEK_CUR
Ajuste la posición del archivo en relación con la posición del archivo actual.
SEEK_END
Ajuste la posición del archivo en relación con el final del archivo.
Sus valores son 0, 1 y 2, respectivamente.
- os.SEEK_HOLE¶
- os.SEEK_DATA¶
Parámetros de la función
lseek()
y del métodoseek()
en file-like objects, para buscar datos de archivos y agujeros en archivos escasamente asignados.SEEK_DATA
Ajuste el desplazamiento del archivo a la siguiente ubicación que contenga datos, en relación con la posición de búsqueda.
SEEK_HOLE
Ajuste el desplazamiento del archivo a la siguiente ubicación que contenga un agujero, en relación con la posición de búsqueda. Un agujero se define como una secuencia de ceros.
Nota
Estas operaciones sólo tienen sentido para los sistemas de archivos que las admiten.
Availability: Linux >= 3.1, macOS, Unix
Added in version 3.3.
- os.open(path, flags, mode=0o777, *, dir_fd=None)¶
Abre el archivo path y configura varios indicadores según flags y su modo según mode. Al calcular el modo el valor actual de umask se enmascara primero. Retorna el descriptor de archivo para el archivo recién abierto. El nuevo descriptor de archivo es no heredable.
Para una descripción de los valores de indicadores (flags) y modo (mode), consulte la documentación de tiempo de ejecución de C; los indicadores constantes de flag (como
O_RDONLY
yO_WRONLY
) se definen en el móduloos
. En particular, en Windows agregarO_BINARY
es necesario para abrir archivos en modo binario.Esta función puede admitir rutas relativas a descriptores de directorio con el parámetro dir_fd.
Lanza un evento de auditoría
open
con argumentospath
,mode
,flags
.Distinto en la versión 3.4: El nuevo descriptor de archivo ahora es no heredable.
Nota
Esta función está diseñada para E/S de bajo nivel. Para un uso normal, use la función integrada
open()
, que retorna un file object con métodosread()
ywrite()
(y mucho mas). Para envolver un descriptor de archivo en un objeto de archivo, usefdopen()
.Distinto en la versión 3.3: Se agregó el parámetro dir_fd.
Distinto en la versión 3.5: Si la llamada al sistema se interrumpe y el controlador de señal no genera una excepción, la función vuelve a intentar la llamada del sistema en lugar de generar una excepción
InterruptedError
(ver PEP 475 para la justificación).Distinto en la versión 3.6: Acepta un objeto tipo ruta.
Las siguientes constantes son opciones para el parámetro flags de la función open()
. Se pueden combinar con el operador OR a nivel de bit |
. Algunos de ellas no están disponibles en todas las plataformas. Para obtener descripciones de su disponibilidad y uso, consulte la página de manual open(2) en Unix o la MSDN en Windows.
- os.O_RDONLY¶
- os.O_WRONLY¶
- os.O_RDWR¶
- os.O_APPEND¶
- os.O_CREAT¶
- os.O_EXCL¶
- os.O_TRUNC¶
Las constantes anteriores están disponibles en Unix y Windows.
- os.O_DSYNC¶
- os.O_RSYNC¶
- os.O_SYNC¶
- os.O_NDELAY¶
- os.O_NONBLOCK¶
- os.O_NOCTTY¶
- os.O_CLOEXEC¶
Las constantes anteriores sólo están disponibles en Unix.
Distinto en la versión 3.3: Se agregó la constante
O_CLOEXEC
.
- os.O_BINARY¶
- os.O_NOINHERIT¶
- os.O_SHORT_LIVED¶
- os.O_TEMPORARY¶
- os.O_RANDOM¶
- os.O_SEQUENTIAL¶
- os.O_TEXT¶
Las constantes anteriores sólo están disponibles en Windows.
- os.O_EVTONLY¶
- os.O_FSYNC¶
- os.O_SYMLINK¶
- os.O_NOFOLLOW_ANY¶
Las constantes anteriores solo están disponibles en macOS.
Distinto en la versión 3.10: Agregue las constantes
O_EVTONLY
,O_FSYNC
,O_SYMLINK
yO_NOFOLLOW_ANY
.
- os.O_ASYNC¶
- os.O_DIRECT¶
- os.O_DIRECTORY¶
- os.O_NOFOLLOW¶
- os.O_NOATIME¶
- os.O_PATH¶
- os.O_TMPFILE¶
- os.O_SHLOCK¶
- os.O_EXLOCK¶
Las constantes anteriores son extensiones y no están presentes si no están definidas por la biblioteca de C.
- os.openpty()¶
Abre un nuevo par de pseudo-terminal. Retorna un par de descriptores de archivo
(master, slave)
; para pty y tty, respectivamente. Los nuevos descriptores de archivo son no heredable. Para un enfoque (ligeramente) más portátil, use el módulopty
.Availability: Unix, not WASI.
Distinto en la versión 3.4: Los nuevos descriptores de archivo ahora son no heredables.
- os.pipe()¶
Crea una tubería. Retorna un par de descriptores de archivo
(r, w)
que se pueden usar para leer y escribir, respectivamente. El nuevo descriptor de archivo es no heredable.Availability: Unix, Windows.
Distinto en la versión 3.4: Los nuevos descriptores de archivo ahora son no heredables.
- os.pipe2(flags, /)¶
Crea una tubería con flags establecidas atómicamente. flags pueden construirse juntando uno o más de estos valores:
O_NONBLOCK
,O_CLOEXEC
con el operador OR. Retorna un par de descriptores de archivo(r, w)
que se pueden usar para leer y escribir, respectivamente.Availability: Unix, not WASI.
Added in version 3.3.
- os.posix_fallocate(fd, offset, len, /)¶
Asegura que se asigne suficiente espacio en disco para el archivo especificado por fd a partir de offset y se extiende por len bytes.
Availability: Unix.
Added in version 3.3.
- os.posix_fadvise(fd, offset, len, advice, /)¶
Avisa una intención de acceder a los datos en un patrón específico, permitiendo así que el núcleo haga optimizaciones. El consejo se aplica a la región del archivo especificada por fd que comienza en offset y se extiende para len bytes. advice es uno de
POSIX_FADV_NORMAL
,POSIX_FADV_SEQUENTIAL
,POSIX_FADV_RANDOM
,POSIX_FADV_NOREUSE
,POSIX_FADV_WILLNEED
oPOSIX_FADV_DONTNEED
.Availability: Unix.
Added in version 3.3.
- os.POSIX_FADV_NORMAL¶
- os.POSIX_FADV_SEQUENTIAL¶
- os.POSIX_FADV_RANDOM¶
- os.POSIX_FADV_NOREUSE¶
- os.POSIX_FADV_WILLNEED¶
- os.POSIX_FADV_DONTNEED¶
Indicadores que se pueden usar en advice en
posix_fadvise()
que especifican el patrón de acceso que es probable que se use.Availability: Unix.
Added in version 3.3.
- os.pread(fd, n, offset, /)¶
Lee como máximo n bytes del descriptor de archivo fd en una posición de offset, sin modificar el desplazamiento (offset) del archivo.
Retorna una cadena de bytes que contiene los bytes leídos. Si se alcanza el final del archivo al que hace referencia fd, se retorna un objeto de bytes vacío.
Availability: Unix.
Added in version 3.3.
- os.posix_openpt(oflag, /)¶
Abrir y devolver un descriptor de archivo para un dispositivo pseudo-terminal maestro.
Llama a la función de la biblioteca estándar de C
posix_openpt()
. El argumento oflag se utiliza para establecer indicadores de estado de archivo y modos de acceso a archivos, tal como se especifica en la página del manual deposix_openpt()
de su sistema.El descriptor de archivo devuelto es non-inheritable. Si el valor
O_CLOEXEC
está disponible en el sistema, se agrega a oflag.Availability: Unix, not WASI.
Added in version 3.13.
- os.preadv(fd, buffers, offset, flags=0, /)¶
Lee de un descriptor de archivo fd en una posición de offset en mutable objetos de tipo bytes buffers, dejando el desplazamiento del archivo sin cambios. Transfiere datos a cada búfer hasta que esté lleno y luego pase al siguiente búfer en la secuencia para contener el resto de los datos.
El argumento flags contiene un operador de bit a bit OR de cero o más de las siguientes flags:
Retorna el número total de bytes realmente leídos que puede ser menor que la capacidad total de todos los objetos.
El sistema operativo puede establecer un límite (
sysconf()
valor'SC_IOV_MAX'
) en el número de búferes que se pueden usar.Combina la funcionalidad de
os.readv()
yos.pread()
.Availability: Linux >= 2.6.30, FreeBSD >= 6.0, OpenBSD >= 2.7, AIX >= 7.1.
El uso de banderas requiere Linux >= 4.6.
Added in version 3.7.
- os.RWF_NOWAIT¶
No espere datos que no estén disponibles de inmediato. Si se especifica este indicador, la llamada al sistema regresará instantáneamente si tuviera que leer datos del almacenamiento de respaldo o esperar por un bloqueo.
Si se leyeron correctamente algunos datos, devolverá la cantidad de bytes leídos. Si no se leyeron bytes, devolverá
-1
y establecerá errno enerrno.EAGAIN
.Availability: Linux >= 4.14.
Added in version 3.7.
- os.RWF_HIPRI¶
Alta prioridad de lectura/escritura. Permite que los sistemas de archivos basados en bloques utilicen el sondeo del dispositivo, lo que proporciona una latencia más baja, pero puede usar recursos adicionales.
Actualmente, en Linux, esta función sólo se puede usar en un descriptor de archivo abierto con el indicador
O_DIRECT
.Availability: Linux >= 4.6.
Added in version 3.7.
- os.ptsname(fd, /)¶
Devuelve el nombre del dispositivo pseudoterminal esclavo asociado con el dispositivo pseudoterminal maestro al que hace referencia el descriptor de archivo fd. El descriptor de archivo fd no se cierra en caso de error.
Llama a la función de biblioteca estándar reentrante C
ptsname_r()
si está disponible; de lo contrario, se llama a la función de biblioteca estándar Cptsname()
, que no se garantiza que sea segura para subprocesos.Availability: Unix, not WASI.
Added in version 3.13.
- os.pwrite(fd, str, offset, /)¶
Escribe la cadena de bytes en str en el descriptor de archivo fd en la posición offset, sin modificar el desplazamiento del archivo.
Retorna el número de bytes realmente escritos.
Availability: Unix.
Added in version 3.3.
- os.pwritev(fd, buffers, offset, flags=0, /)¶
Escribe el contenido de buffers en el descriptor de archivo fd en un desplazamiento offset, sin modificar el desplazamiento del archivo. buffers debe ser una secuencia de bytes-like objects. Los búferes se procesan en orden de matriz. Se escribe todo el contenido del primer búfer antes de pasar al segundo, y así sucesivamente.
El argumento flags contiene un operador de bit a bit OR de cero o más de las siguientes flags:
Retorna el número total de bytes realmente escritos.
El sistema operativo puede establecer un límite (
sysconf()
valor'SC_IOV_MAX'
) en el número de búferes que se pueden usar.Combina la funcionalidad de
os.writev()
yos.pwrite()
.Availability: Linux >= 2.6.30, FreeBSD >= 6.0, OpenBSD >= 2.7, AIX >= 7.1.
El uso de banderas requiere Linux >= 4.6.
Added in version 3.7.
- os.RWF_DSYNC¶
Proporcione un equivalente por escritura del indicador
O_DSYNC
os.open()
. Este efecto de bandera se aplica solo al rango de datos escrito por la llamada al sistema.Availability: Linux >= 4.7.
Added in version 3.7.
- os.RWF_SYNC¶
Proporcione un equivalente por escritura del indicador
O_SYNC
os.open()
. Este efecto de bandera se aplica solo al rango de datos escrito por la llamada al sistema.Availability: Linux >= 4.7.
Added in version 3.7.
- os.RWF_APPEND¶
Proporcione un equivalente por escritura del indicador
O_APPEND
os.open()
. Esta bandera es significativa solo paraos.pwritev()
y su efecto se aplica solo al rango de datos escrito por la llamada al sistema. El argumento offset no afecta la operación de escritura; los datos siempre se añaden al final del archivo. Sin embargo, si el argumento offset es-1
, se actualiza el offset actual del archivo.Availability: Linux >= 4.16.
Added in version 3.10.
- os.read(fd, n, /)¶
Lee como máximo n bytes del descriptor de archivo fd.
Retorna una cadena de bytes que contiene los bytes leídos. Si se alcanza el final del archivo al que hace referencia fd, se retorna un objeto de bytes vacío.
Nota
Esta función está diseñada para E/S de bajo nivel y debe aplicarse a un descriptor de archivo tal como lo retorna
os.open()
opipe()
. Para leer un «objeto archivo» retornado por la función incorporadaopen()
o porpopen()
ofdopen()
, osys.stdin
, use los métodosread()
oreadline()
.Distinto en la versión 3.5: Si la llamada al sistema se interrumpe y el controlador de señal no genera una excepción, la función vuelve a intentar la llamada del sistema en lugar de generar una excepción
InterruptedError
(ver PEP 475 para la justificación).
- os.readinto(fd, buffer, /)¶
Read from a file descriptor fd into a mutable buffer object buffer.
The buffer should be mutable and bytes-like. On success, returns the number of bytes read. Less bytes may be read than the size of the buffer. The underlying system call will be retried when interrupted by a signal, unless the signal handler raises an exception. Other errors will not be retried and an error will be raised.
Returns 0 if fd is at end of file or if the provided buffer has length 0 (which can be used to check for errors without reading data). Never returns negative.
Nota
This function is intended for low-level I/O and must be applied to a file descriptor as returned by
os.open()
oros.pipe()
. To read a «file object» returned by the built-in functionopen()
, orsys.stdin
, use its member functions, for exampleio.BufferedIOBase.readinto()
,io.BufferedIOBase.read()
, orio.TextIOBase.read()
Added in version 3.14.
- os.sendfile(out_fd, in_fd, offset, count)¶
- os.sendfile(out_fd, in_fd, offset, count, headers=(), trailers=(), flags=0)
Copia count bytes del descriptor de archivo in_fd al descriptor de archivo out_fd comenzando en offset. Retorna el número de bytes enviados. Cuando se alcanza EOF, retorna
0
.La primera notación de la función es compatible con todas las plataformas que definen
sendfile()
.En Linux, si offset se entrega como
None
, los bytes se leen desde la posición actual de in_fd y la posición de in_fd se actualiza.El segundo caso se puede usar en macOS y FreeBSD donde headers y trailers son secuencias arbitrarias de búferes que se escriben antes y después de que se escriban los datos de in_fd. Retorna lo mismo que el primer caso.
En macOS y FreeBSD, un valor de
0
para count especifica enviar hasta que se alcanza el final de in_fd.Todas las plataformas admiten sockets como descriptor de archivo out_fd, y algunas plataformas también permiten otros tipos (por ejemplo, archivo regular, tuberías).
Las aplicaciones multiplataforma no deben usar los argumentos headers, trailers y flags.
Availability: Unix, not WASI.
Nota
Para un contenedor de alto nivel de
sendfile()
, veasocket.socket.sendfile()
.Added in version 3.3.
Distinto en la versión 3.9: Parámetros out e in han sido renombrados a out_fd e in_fd.
- os.SF_NODISKIO¶
- os.SF_MNOWAIT¶
- os.SF_SYNC¶
Parámetros para la función
sendfile()
, si la implementación los admite.Availability: Unix, not WASI.
Added in version 3.3.
- os.SF_NOCACHE¶
Parámetro a la función
sendfile()
, si la implementación lo admite. Los datos no se almacenarán en caché en la memoria virtual y se liberarán después.Availability: Unix, not WASI.
Added in version 3.11.
- os.set_blocking(fd, blocking, /)¶
Establece el modo de bloqueo del descriptor de archivo especificado. Establece la flag
O_NONBLOCK
si se quiere que el bloqueo seaFalse
, borre la flag de lo contrario.Consulte también
get_blocking()
ysocket.socket.setblocking()
.Availability: Unix, Windows.
La función está limitada en WASI, consulte Plataformas WebAssembly para obtener más información.
En Windows, esta función está limitada a las tuberías.
Added in version 3.5.
Distinto en la versión 3.12: Se agregó soporte para pipes en Windows.
- os.splice(src, dst, count, offset_src=None, offset_dst=None, flags=0)¶
Transfer count bytes from file descriptor src, starting from offset offset_src, to file descriptor dst, starting from offset offset_dst.
The splicing behaviour can be modified by specifying a flags value. Any of the following variables may used, combined using bitwise OR (the
|
operator):If
SPLICE_F_MOVE
is specified, the kernel is asked to move pages instead of copying, but pages may still be copied if the kernel cannot move the pages from the pipe.If
SPLICE_F_NONBLOCK
is specified, the kernel is asked to not block on I/O. This makes the splice pipe operations nonblocking, but splice may nevertheless block because the spliced file descriptors may block.If
SPLICE_F_MORE
is specified, it hints to the kernel that more data will be coming in a subsequent splice.
At least one of the file descriptors must refer to a pipe. If offset_src is
None
, then src is read from the current position; respectively for offset_dst. The offset associated to the file descriptor that refers to a pipe must beNone
. The files pointed to by src and dst must reside in the same filesystem, otherwise anOSError
is raised witherrno
set toerrno.EXDEV
.Esta copia se realiza sin el costo adicional de transferir datos desde el kernel al espacio del usuario y luego nuevamente al kernel. También, algunos sistemas de archivos podrían implementar optimizaciones adicionales. La copia se realiza como si ambos archivos se abrieran como binarios.
Una vez completado con éxito, retorna el número de bytes empalmados hacia o desde la tubería. Un valor de retorno de 0 significa el final de la entrada. Si src se refiere a una tubería, esto significa que no hay datos para transferir y no tendría sentido bloquear porque no hay escritores conectados al extremo de escritura de la tubería.
Ver también
The splice(2) man page.
Availability: Linux >= 2.6.17 with glibc >= 2.5
Added in version 3.10.
- os.readv(fd, buffers, /)¶
Leer desde un descriptor de archivo fd en una cantidad de mutable objetos tipo bytes buffers. Transfiere datos a cada búfer hasta que esté lleno y luego pase al siguiente búfer en la secuencia para contener el resto de los datos.
Retorna el número total de bytes realmente leídos que puede ser menor que la capacidad total de todos los objetos.
El sistema operativo puede establecer un límite (
sysconf()
valor'SC_IOV_MAX'
) en el número de búferes que se pueden usar.Availability: Unix.
Added in version 3.3.
- os.tcgetpgrp(fd, /)¶
Retorna el grupo del proceso asociado con la terminal proporcionada por fd (un descriptor de archivo abierto como lo retorna
os.open()
).Availability: Unix, not WASI.
- os.tcsetpgrp(fd, pg, /)¶
Establece el grupo del proceso asociado con la terminal dada por fd (un descriptor de archivo abierto como lo retorna
os.open()
) a pg.Availability: Unix, not WASI.
- os.ttyname(fd, /)¶
Retorna una cadena que especifica el dispositivo de terminal asociado con el descriptor de archivo fd. Si fd no está asociado con un dispositivo de terminal, se genera una excepción.
Availability: Unix.
- os.unlockpt(fd, /)¶
Desbloquee el dispositivo pseudoterminal esclavo asociado con el dispositivo pseudoterminal maestro al que hace referencia el descriptor de archivo fd. El descriptor de archivo fd no se cierra en caso de falla.
Llama a la función de la biblioteca estándar C
unlockpt()
.Availability: Unix, not WASI.
Added in version 3.13.
- os.write(fd, str, /)¶
Escribe la cadena de bytes en str en el descriptor de archivo fd.
Retorna el número de bytes realmente escritos.
Nota
Esta función está diseñada para E/S de bajo nivel y debe aplicarse a un descriptor de archivo tal como lo retorna
os.open()
opipe()
. Para escribir un «objeto archivo» retornado por la función incorporadaopen()
o porpopen()
ofdopen()
, osys.stdout
osys.stderr
, use el métodowrite()
.Distinto en la versión 3.5: Si la llamada al sistema se interrumpe y el controlador de señal no genera una excepción, la función vuelve a intentar la llamada del sistema en lugar de generar una excepción
InterruptedError
(ver PEP 475 para la justificación).
- os.writev(fd, buffers, /)¶
Escribe el contenido de buffers en el descriptor de archivo fd. buffers debe ser una secuencia de objetos tipo bytes. Los búferes se procesan en orden secuencial. Se escribe todo el contenido del primer búfer antes de pasar al segundo, y así sucesivamente.
Retorna el número total de bytes realmente escritos.
El sistema operativo puede establecer un límite (
sysconf()
valor'SC_IOV_MAX'
) en el número de búferes que se pueden usar.Availability: Unix.
Added in version 3.3.
Consultando las dimensiones de una terminal¶
Added in version 3.3.
- os.get_terminal_size(fd=STDOUT_FILENO, /)¶
Retorna el tamaño de la ventana de la terminal como
(columns, lines)
, una tupla del tipoterminal_size
.El argumento opcional
fd
(por defecto esSTDOUT_FILENO
, o la salida estándar) especifica qué descriptor de archivo debe consultarse.Si el descriptor de archivo no está conectado a una terminal, se genera un
OSError
.shutil.get_terminal_size()
es la función de alto nivel que normalmente debería usarse,os.get_terminal_size
es la implementación de bajo nivel.Availability: Unix, Windows.
Herencia de los descriptores de archivos¶
Added in version 3.4.
Un descriptor de archivo tiene un indicador heredable (inheritable) que indica si el descriptor de archivo puede ser heredado por procesos secundarios. Desde Python 3.4, los descriptores de archivo creados por Python son no heredables por defecto.
En UNIX, los descriptores de archivo no heredables se cierran en procesos hijos en la ejecución de un nuevo programa, otros descriptores de archivos sí se heredan.
En Windows, los descriptores de archivo y los identificadores no heredables se cierran en los procesos hijos, a excepción de los flujos estándar (descriptores de archivo 0, 1 y 2: stdin, stdout y stderr), que siempre se heredan. Usando las funciones spawn*
, todos los identificadores heredables y todos los descriptores de archivos heredables se heredan. Usando el módulo subprocess
, todos los descriptores de archivo, excepto los flujos estándar, están cerrados, y los identificadores heredables sólo se heredan si el parámetro close_fds es False
.
En las plataformas WebAssembly, el descriptor de archivo no se puede modificar.
- os.get_inheritable(fd, /)¶
Obtiene el indicador heredable (inheritable) del descriptor de archivo especificado (un valor booleano).
- os.set_inheritable(fd, inheritable, /)¶
Establece el indicador heredable (inheritable) del descriptor de archivo especificado.
- os.get_handle_inheritable(handle, /)¶
Obtiene el indicador heredable (inheritable) del identificador especificado (un valor booleano).
Availability: Windows.
- os.set_handle_inheritable(handle, inheritable, /)¶
Establece el indicador heredable (inheritable) del identificador especificado.
Availability: Windows.
Archivos y directorios¶
En algunas plataformas Unix, muchas de estas funciones admiten una o más de estas características:
specifying a file descriptor: Normally the path argument provided to functions in the
os
module must be a string specifying a file path. However, some functions now alternatively accept an open file descriptor for their path argument. The function will then operate on the file referred to by the descriptor. For POSIX systems, Python will call the variant of the function prefixed withf
(e.g. callfchdir
instead ofchdir
).Puede verificar si path se puede especificar o no como un descriptor de archivo para una función particular en su plataforma usando
os.supports_fd
. Si esta funcionalidad no está disponible, su uso lanzará unNotImplementedError
.Si la función también admite argumentos dir_fd o follow_symlinks, es un error especificar uno de esos al suministrar path como descriptor de archivo.
paths relative to directory descriptors: If dir_fd is not
None
, it should be a file descriptor referring to a directory, and the path to operate on should be relative; path will then be relative to that directory. If the path is absolute, dir_fd is ignored. For POSIX systems, Python will call the variant of the function with anat
suffix and possibly prefixed withf
(e.g. callfaccessat
instead ofaccess
).Puede verificar si dir_fd es compatible o no para una función particular en su plataforma usando
os.supports_dir_fd
. Si no está disponible, usarlo lanzará unNotImplementedError
.
not following symlinks: If follow_symlinks is
False
, and the last element of the path to operate on is a symbolic link, the function will operate on the symbolic link itself rather than the file pointed to by the link. For POSIX systems, Python will call thel...
variant of the function.Puede verificar si follow_symlinks es compatible o no para una función particular en su plataforma usando
os.supports_follow_symlinks
. Si no está disponible, usarlo lanzará unNotImplementedError
.
- os.access(path, mode, *, dir_fd=None, effective_ids=False, follow_symlinks=True)¶
Use el uid/gid real para probar el acceso a path. Tenga en cuenta que la mayoría de las operaciones utilizarán el uid/gid efectivo, por lo tanto, esta rutina se puede usar en un entorno suid/sgid para probar si el usuario que invoca tiene el acceso especificado a path. mode debería ser
F_OK
para probar la existencia de path, o puede ser el OR inclusivo de uno o más deR_OK
,W_OK
, yX_OK
para probar los permisos. RetornaTrue
si el acceso está permitido,False
si no. Consulte la página de manual de Unix access (2) para obtener más información.Esta función puede admitir la especificación rutas relativas a descriptores de directorio y no seguir los enlaces simbólicos.
Si effective_ids es
True
,access()
realizará sus comprobaciones de acceso utilizando el uid/gid efectivo en lugar del uid/gid real. effective_ids puede no ser compatible con su plataforma; puede verificar si está disponible o no usandoos.supports_effective_ids
. Si no está disponible, usarlo lanzará unNotImplementedError
.Nota
Usando
access()
para verificar si un usuario está autorizado para, por ejemplo, abrir un archivo antes de hacerlo usandoopen()
crea un agujero de seguridad, porque el usuario podría explotar el breve intervalo de tiempo entre verificar y abrir el archivo para manipularlo es preferible utilizar técnicas EAFP. Por ejemplo:if os.access("myfile", os.R_OK): with open("myfile") as fp: return fp.read() return "some default data"
está mejor escrito como:
try: fp = open("myfile") except PermissionError: return "some default data" else: with fp: return fp.read()
Nota
Las operaciones de E/S pueden fallar incluso cuando
access()
indica que tendrán éxito, particularmente para operaciones en sistemas de archivos de red que pueden tener una semántica de permisos más allá del modelo habitual de bits de permiso POSIX.Distinto en la versión 3.3: Se agregaron los parámetros dir_fd, effective_ids y follow_symlinks.
Distinto en la versión 3.6: Acepta un objeto tipo ruta.
- os.F_OK¶
- os.R_OK¶
- os.W_OK¶
- os.X_OK¶
Valores para pasar como parámetro mode de
access()
para probar la existencia, legibilidad, escritura y ejecutabilidad de path, respectivamente.
- os.chdir(path)¶
Cambia el directorio de trabajo actual a path.
Esta función puede soportar especificando un descriptor de archivo. El descriptor debe hacer referencia a un directorio abierto, no a un archivo abierto.
Esta función puede generar
OSError
y subclases comoFileNotFoundError
,PermissionError
, yNotADirectoryError
.Lanza un evento de auditoría
os.chdir
con argumentopath
.Distinto en la versión 3.3: Se agregó soporte para especificar path como descriptor de archivo en algunas plataformas.
Distinto en la versión 3.6: Acepta un objeto tipo ruta.
- os.chflags(path, flags, *, follow_symlinks=True)¶
Establece las flags del path a las flags numéricas. flags puede tomar una combinación (OR bit a bit) de los siguientes valores (como se define en el módulo
stat
):Esta función puede soportar no seguir enlaces simbólicos.
Lanza un evento de auditoría
os.chflags
con argumentospath
,flags
.Availability: Unix, not WASI.
Distinto en la versión 3.3: Se agregó el argumento follow_symlinks.
Distinto en la versión 3.6: Acepta un objeto tipo ruta.
- os.chmod(path, mode, *, dir_fd=None, follow_symlinks=True)¶
Cambia el modo de path al modo numérico mode. mode puede tomar uno de los siguientes valores (como se define en el módulo
stat
) o combinaciones OR de bit a bit de ellos:Esta función puede soportar especificando un descriptor de archivo, rutas relativas a los descriptores de directorio y no seguir enlaces simbólicos.
Nota
Aunque Windows admite
chmod()
, solo se puede configurar el indicador de solo lectura del archivo con él (a través de las constantesstat.S_IWRITE
ystat.S_IREAD
o un valor entero correspondiente). Se ignoran todos los demás bits. El valor predeterminado de follow_symlinks esFalse
en Windows.La función está limitada en WASI, consulte Plataformas WebAssembly para obtener más información.
Lanza un evento de auditoría
os.chmod
con argumentospath
,mode
,dir_fd
.Distinto en la versión 3.3: Se agregó soporte para especificar path como un descriptor de archivo abierto, y los argumentos dir_fd y follow_symlinks.
Distinto en la versión 3.6: Acepta un objeto tipo ruta.
Distinto en la versión 3.13: Se agregó soporte para un descriptor de archivo y el argumento follow_symlinks en Windows.
- os.chown(path, uid, gid, *, dir_fd=None, follow_symlinks=True)¶
Cambia el propietario y el id del grupo de path a los numéricos uid y gid. Para dejar uno de los identificadores sin cambios, configúrelo en -1.
Esta función puede soportar especificando un descriptor de archivo, rutas relativas a los descriptores de directorio y no seguir enlaces simbólicos.
Ver
shutil.chown()
para una función de nivel superior que acepta nombres además de identificadores numéricos.Lanza un evento de auditoría
os.chown
con argumentospath
,uid
,gid
,dir_fd
.Availability: Unix.
La función está limitada en WASI, consulte Plataformas WebAssembly para obtener más información.
Distinto en la versión 3.3: Se agregó soporte para especificar path como un descriptor de archivo abierto, y los argumentos dir_fd y follow_symlinks.
Distinto en la versión 3.6: Admite un objeto tipo ruta.
- os.chroot(path)¶
Cambia el directorio raíz del proceso actual a path.
Availability: Unix, not WASI, not Android.
Distinto en la versión 3.6: Acepta un objeto tipo ruta.
- os.fchdir(fd)¶
Cambia el directorio de trabajo actual al directorio representado por el descriptor de archivo fd. El descriptor debe hacer referencia a un directorio abierto, no a un archivo abierto. A partir de Python 3.3, esto es equivalente a
os.chdir(fd)
.Lanza un evento de auditoría
os.chdir
con argumentopath
.Availability: Unix.
- os.getcwd()¶
Retorna una cadena que representa el directorio de trabajo actual.
- os.getcwdb()¶
Retorna una cadena de bytes que representa el directorio de trabajo actual.
Distinto en la versión 3.8: La función ahora usa la codificación UTF-8 en Windows, en lugar de los códigos ANSI: consulte PEP 529 para ver la justificación. La función ya no está en desuso en Windows.
- os.lchflags(path, flags)¶
Establece las flags de path a las flags numéricas, como
chflags()
, pero no siga los enlaces simbólicos. A partir de Python 3.3, esto es equivalente aos.chflags(path, flags, follow_symlinks=False)
.Lanza un evento de auditoría
os.chflags
con argumentospath
,flags
.Availability: Unix, not WASI.
Distinto en la versión 3.6: Acepta un objeto tipo ruta.
- os.lchmod(path, mode)¶
Cambia el modo de path al mode numérico. Si la ruta es un enlace simbólico, esto afecta al enlace simbólico en lugar del objetivo. Consulte los documentos para
chmod()
para conocer los posibles valores de mode. A partir de Python 3.3, esto es equivalente aos.chmod(path, mode, follow_symlinks=False)
.lchmod()
no es parte de POSIX, pero las implementaciones de Unix pueden tenerlo si se admite el cambio del modo de enlaces simbólicos.Lanza un evento de auditoría
os.chmod
con argumentospath
,mode
,dir_fd
.Availability: Unix, Windows, not Linux, FreeBSD >= 1.3, NetBSD >= 1.3, not OpenBSD
Distinto en la versión 3.6: Acepta un objeto tipo ruta.
Distinto en la versión 3.13: Se agregó soporte en Windows.
- os.lchown(path, uid, gid)¶
Cambia el propietario y la identificación del grupo de path a los numéricos uid y gid. Esta función no seguirá enlaces simbólicos. A partir de Python 3.3, esto es equivalente a
os.chown(path, uid, gid, follow_symlinks=False)
.Lanza un evento de auditoría
os.chown
con argumentospath
,uid
,gid
,dir_fd
.Availability: Unix.
Distinto en la versión 3.6: Acepta un objeto tipo ruta.
- os.link(src, dst, *, src_dir_fd=None, dst_dir_fd=None, follow_symlinks=True)¶
Cree un enlace rígido que apunte a src llamado dst.
This function can support specifying src_dir_fd and/or dst_dir_fd to supply paths relative to directory descriptors, and not following symlinks. The default value of follow_symlinks is
False
on Windows.Lanza un evento de auditoría
os.link
con argumentossrc
,dst
,src_dir_fd
,dst_dir_fd
.Availability: Unix, Windows.
Distinto en la versión 3.2: Se agregó soporte para Windows.
Distinto en la versión 3.3: Se agregaron los parámetros src_dir_fd, dst_dir_fd y follow_symlinks.
Distinto en la versión 3.6: Acepta un path-like object para src y dst.
- os.listdir(path='.')¶
Retorna una lista que contiene los nombres de las entradas en el directorio dado por path. La lista está en un orden arbitrario y no incluye las entradas especiales
'.'
Y'..'
incluso si están presentes en el directorio. Si un archivo es removido de o añadido al directorio mientras se llama a esta función, no se especifica si el nombre para el archivo será incluido.path puede ser un path-like object. Si path es de tipo
bytes
(directa o indirectamente a través de la interfazPathLike
), los nombres de archivo retornados también serán de tipobytes
; en todas las demás circunstancias, serán del tipostr
.Esta función también puede admitir especificando un descriptor de archivo; el descriptor de archivo debe hacer referencia a un directorio.
Lanza un evento de auditoría
os.listdir
con el argumentoruta
.Nota
Para codificar los nombres de archivo
str
enbytes
, usefsencode()
.Ver también
La función
scandir()
retorna entradas de directorio junto con información de atributos de archivo, lo que proporciona un mejor rendimiento para muchos casos de uso comunes.Distinto en la versión 3.2: El parámetro path se convirtió en opcional.
Distinto en la versión 3.3: Se agregó soporte para especificar path como un descriptor de archivo abierto.
Distinto en la versión 3.6: Acepta un objeto tipo ruta.
- os.listdrives()¶
Devuelve una lista que contiene los nombres de las unidades en un sistema Windows.
El nombre de una unidad suele ser
'C:\\'
. No todos los nombres de unidades se asociarán a un volumen y es posible que algunas sean inaccesibles por diversos motivos, incluidos permisos, conectividad de red o medios faltantes. Esta función no prueba el acceso.Puede generar
OSError
si ocurre un error al recopilar los nombres de las unidades.Genera un auditing event
os.listdrives
sin argumentos.Availability: Windows
Added in version 3.12.
- os.listmounts(volume)¶
Devuelve una lista que contiene los puntos de montaje de un volumen en un sistema Windows.
volume debe representarse como una ruta GUID, como las que devuelve
os.listvolumes()
. Los volúmenes pueden montarse en varias ubicaciones o no montarse en ninguna. En este último caso, la lista estará vacía. Esta función no devolverá los puntos de montaje que no estén asociados a un volumen.Los puntos de montaje devueltos por esta función serán rutas absolutas y pueden ser más largos que el nombre de la unidad.
Genera
OSError
si no se reconoce el volumen o si se produce un error al recopilar las rutas.Genera un auditing event
os.listmounts
con el argumentovolume
.Availability: Windows
Added in version 3.12.
- os.listvolumes()¶
Devuelve una lista que contiene los volúmenes del sistema.
Los volúmenes se representan normalmente como una ruta GUID similar a
\\?\Volume{xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}\
. Normalmente, se puede acceder a los archivos a través de una ruta GUID, si los permisos lo permiten. Sin embargo, los usuarios no suelen estar familiarizados con ellos, por lo que el uso recomendado de esta función es recuperar los puntos de montaje medianteos.listmounts()
.Puede generar
OSError
si ocurre un error al recopilar los volúmenes.Genera un auditing event
os.listvolumes
sin argumentos.Availability: Windows
Added in version 3.12.
- os.lstat(path, *, dir_fd=None)¶
Realiza el equivalente de una llamada al sistema
lstat()
en la ruta indicada. Similar astat()
, pero no sigue enlaces simbólicos. Devuelve un objetostat_result
.En plataformas que no admiten enlaces simbólicos, este es un alias para
stat()
.A partir de Python 3.3, esto es equivalente a
os.stat(path, dir_fd=dir_fd, follow_symlinks=False)
.Esta función también puede admitir rutas relativas a descriptores de directorio.
Ver también
La función
stat()
.Distinto en la versión 3.2: Se agregó soporte para enlaces simbólicos de Windows 6.0 (Vista).
Distinto en la versión 3.3: Se agregó el parámetro dir_fd.
Distinto en la versión 3.6: Acepta un objeto tipo ruta.
Distinto en la versión 3.8: En Windows, ahora abre puntos de análisis que representan otra ruta (nombres sustitutos), incluidos enlaces simbólicos y uniones de directorio. El sistema operativo resuelve otros tipos de puntos de análisis como
stat()
.
- os.mkdir(path, mode=0o777, *, dir_fd=None)¶
Cree un directorio llamado path con modo numérico mode.
Si el directorio ya existe, se genera
FileExistsError
. Si no existe un directorio principal en la ruta, se generaFileNotFoundError
.En algunos sistemas, mode se ignora. Donde se usa, el valor actual de umask se enmascara primero. Si se establecen bits distintos de los últimos 9 (es decir, los últimos 3 dígitos de la representación octal del mode), su significado depende de la plataforma. En algunas plataformas, se ignoran y debe llamar a
chmod()
explícitamente para configurarlos.En Windows, se maneja específicamente un mode o
0o700
para aplicar el control de acceso al nuevo directorio de modo que solo el usuario actual y los administradores tengan acceso. Se ignoran otros valores de mode.Esta función también puede admitir rutas relativas a descriptores de directorio.
También es posible crear directorios temporales; vea la función
tempfile
del módulotempfile.mkdtemp()
.Lanza un evento de auditoría
os.mkdir
con argumentosruta
,modo
,dir_fd
.Distinto en la versión 3.3: Se agregó el parámetro dir_fd.
Distinto en la versión 3.6: Acepta un objeto tipo ruta.
Distinto en la versión 3.13: Windows ahora maneja un mode o
0o700
.
- os.makedirs(name, mode=0o777, exist_ok=False)¶
Función de creación de directorio recursiva. Como
mkdir()
, pero hace que todos los directorios de nivel intermedio sean necesarios para contener el directorio hoja.El parámetro mode se pasa a
mkdir()
para crear el directorio hoja; consulte the mkdir() description para saber cómo se interpreta. Para configurar los bits de permiso de archivo de cualquier directorio principal recién creado, puede configurar umask antes de invocarmakedirs()
. Los bits de permiso de archivo de los directorios principales existentes no se modifican.Si exist_ok es
False
(el valor predeterminado), se genera unFileExistsError
si el directorio de destino ya existe.Nota
makedirs()
se confundirá si los elementos de ruta a crear incluyenpardir
(por ejemplo, «..» en sistemas UNIX).Esta función maneja las rutas UNC correctamente.
Lanza un evento de auditoría
os.mkdir
con argumentosruta
,modo
,dir_fd
.Distinto en la versión 3.2: Se agregó el parámetro exist_ok.
Distinto en la versión 3.4.1: Antes de Python 3.4.1, si exist_ok era
True
y el directorio existía,makedirs()
aún generaría un error si mode no coincidía con el modo del directorio existente. Como este comportamiento era imposible de implementar de forma segura, se eliminó en Python 3.4.1. Ver bpo-21082.Distinto en la versión 3.6: Acepta un objeto tipo ruta.
Distinto en la versión 3.7: El argumento mode ya no afecta los bits de permiso de archivo de los directorios de nivel intermedio recién creados.
- os.mkfifo(path, mode=0o666, *, dir_fd=None)¶
Cree una FIFO (una tubería con nombre) llamada path con modo numérico modo. El valor actual de umask se enmascara primero del modo.
Esta función también puede admitir rutas relativas a descriptores de directorio.
Los FIFO son tuberías a las que se puede acceder como archivos normales. Los FIFO existen hasta que se eliminan (por ejemplo con
os.unlink()
). En general, los FIFO se utilizan como punto de encuentro entre los procesos de tipo «cliente» y «servidor»: el servidor abre el FIFO para leer y el cliente lo abre para escribir. Tenga en cuenta quemkfifo()
no abre el FIFO — solo crea el punto de encuentro.Availability: Unix, not WASI.
Distinto en la versión 3.3: Se agregó el parámetro dir_fd.
Distinto en la versión 3.6: Acepta un objeto tipo ruta.
- os.mknod(path, mode=0o600, device=0, *, dir_fd=None)¶
Cree un nodo del sistema de archivos (archivo, archivo especial del dispositivo o canalización con nombre) llamado path. mode especifica tanto los permisos para usar como el tipo de nodo que se creará, combinándose (OR bit a bit) con uno de
stat.S_IFREG
,stat.S_IFCHR
,stat.S_IFBLK
, ystat.S_IFIFO
(esas constantes están disponibles enstat
). Parastat.S_IFCHR
ystat.S_IFBLK
, device define el archivo especial del dispositivo recién creado (probablemente usandoos.makedev()
), de lo contrario se ignora.Esta función también puede admitir rutas relativas a descriptores de directorio.
Availability: Unix, not WASI.
Distinto en la versión 3.3: Se agregó el parámetro dir_fd.
Distinto en la versión 3.6: Acepta un objeto tipo ruta.
- os.major(device, /)¶
Extrae el número principal del dispositivo de un número de dispositivo sin procesar (generalmente el campo
st_dev
ost_rdev
destat
).
- os.minor(device, /)¶
Extrae el número menor del dispositivo de un número de dispositivo sin procesar (generalmente el campo
st_dev
ost_rdev
destat
).
- os.makedev(major, minor, /)¶
Compone un número de dispositivo sin procesar a partir de los números de dispositivo mayor y menor.
- os.pathconf(path, name)¶
Retorna información de configuración del sistema relevante para un archivo con nombre. name especifica el valor de configuración para recuperar; puede ser una cadena que es el nombre de un valor de sistema definido; Estos nombres se especifican en varios estándares (POSIX.1, Unix 95, Unix 98 y otros). Algunas plataformas también definen nombres adicionales. Los nombres conocidos por el sistema operativo host se dan en el diccionario
pathconf_names
. Para las variables de configuración no incluidas en esa asignación, también se acepta pasar un número entero para name.Si name es una cadena y no se conoce, se lanza un
ValueError
. Si el sistema anfitrión no admite un valor específico para name, incluso si está incluido enpathconf_names
, se genera unOSError
conerrno.EINVAL
para el número de error.Esta función puede soportar especificando un descriptor de archivo.
Availability: Unix.
Distinto en la versión 3.6: Acepta un objeto tipo ruta.
- os.pathconf_names¶
Nombres de mapeo de diccionario aceptados por
pathconf()
yfpathconf()
a los valores enteros definidos para esos nombres por el sistema operativo host. Esto se puede usar para determinar el conjunto de nombres conocidos por el sistema.Availability: Unix.
- os.readlink(path, *, dir_fd=None)¶
Retorna una cadena que representa la ruta a la que apunta el enlace simbólico. El resultado puede ser un nombre de ruta absoluto o relativo; si es relativo, se puede convertir a un nombre de ruta absoluto usando
os.path.join(os.path.dirname(path), result)
.Si la path es un objeto de cadena (directa o indirectamente a través de una interfaz
PathLike
), el resultado también será un objeto de cadena y la llamada puede generar un UnicodeDecodeError. Si la path es un objeto de bytes (directa o indirectamente), el resultado será un objeto de bytes.Esta función también puede admitir rutas relativas a descriptores de directorio.
Cuando intente resolver una ruta que puede contener enlaces, use
realpath()
para manejar adecuadamente la recurrencia y las diferencias de plataforma.Availability: Unix, Windows.
Distinto en la versión 3.2: Se agregó soporte para enlaces simbólicos de Windows 6.0 (Vista).
Distinto en la versión 3.3: Se agregó el parámetro dir_fd.
Distinto en la versión 3.6: Acepta un path-like object en Unix.
Distinto en la versión 3.8: Acepta un path-like object y un objeto de bytes en Windows.
Se agregó soporte para uniones de directorio y se modificó para retornar la ruta de sustitución (que generalmente incluye el prefijo
\\?\
) En lugar del campo opcional «nombre de impresión» que se retornó anteriormente.
- os.remove(path, *, dir_fd=None)¶
Eliminar (borrar) el archivo path. Si path es un directorio, se genera un error
OSError
. Utilicermdir()
para eliminar directorios. Si el archivo no existe, se genera un errorFileNotFoundError
.Esta función puede admitir rutas relativas a descriptores de directorio.
En Windows, intentar eliminar un archivo que está en uso provoca una excepción; en Unix, la entrada del directorio se elimina pero el almacenamiento asignado al archivo no está disponible hasta que el archivo original ya no esté en uso.
Esta función es semánticamente idéntica a
unlink()
.Lanza un evento de auditoría
os.remove
con argumentosruta
,dir_fd
.Distinto en la versión 3.3: Se agregó el parámetro dir_fd.
Distinto en la versión 3.6: Acepta un objeto tipo ruta.
- os.removedirs(name)¶
Eliminar directorios de forma recursiva. Funciona como
rmdir()
excepto que, si el directorio hoja se elimina con éxito,removeirs()
intenta eliminar sucesivamente cada directorio principal mencionado en path hasta que se genere un error (que se ignora, porque generalmente significa que un directorio padre no está vacío). Por ejemplo,os.removedirs('foo/bar/baz')
primero eliminará el directorio'foo/bar/baz'
, y luego eliminará'foo/bar'
y'foo'
si están vacíos. GeneraOSError
si el directorio hoja no se pudo eliminar con éxito.Lanza un evento de auditoría
os.remove
con argumentosruta
,dir_fd
.Distinto en la versión 3.6: Acepta un objeto tipo ruta.
- os.rename(src, dst, *, src_dir_fd=None, dst_dir_fd=None)¶
Cambia el nombre del archivo o directorio src a dst. Si dst existe, la operación fallará con una subclase
OSError
en varios casos:En Windows, si existe dst, siempre se genera un
FileExistsError
. La operación puede fallar si src y dst están en sistemas de archivos diferentes. Utiliceshutil.move()
para admitir movimientos a un sistema de archivos diferente.En Unix, si src es un archivo y dst es un directorio o viceversa, se generará un
IsADirectoryError
o unNotADirectoryError
respectivamente. Si ambos son directorios y dst está vacío, dst se reemplazará silenciosamente. Si dst no es un directorio vacío, se genera unOSError
. Si ambos son archivos, dst se reemplazará silenciosamente si el usuario tiene permiso. La operación puede fallar en algunos tipos de Unix si src y dst están en sistemas de archivos diferentes. Si tiene éxito, el cambio de nombre será una operación atómica (este es un requisito POSIX).Esta función puede admitir la especificación de src_dir_fd o dst_dir_fd para proporcionar rutas relativas a los descriptores de directorio.
Si desea sobrescribir multiplataforma del destino, use
replace()
.Lanza un evento de auditoría
os.rename
con argumentossrc
,dst
,src_dir_fd
,dst_dir_fd
.Distinto en la versión 3.3: Se agregaron los parámetros src_dir_fd y dst_dir_fd.
Distinto en la versión 3.6: Acepta un path-like object para src y dst.
- os.renames(old, new)¶
Directorio recursivo o función de cambio de nombre de archivo. Funciona como
rename()
, excepto que primero se intenta crear cualquier directorio intermedio necesario para que el nuevo nombre de ruta sea bueno. Después del cambio de nombre, los directorios correspondientes a los segmentos de ruta más a la derecha del nombre anterior se eliminarán usandoremoveirs()
.Nota
Esta función puede fallar con la nueva estructura de directorios realizada si carece de los permisos necesarios para eliminar el directorio o archivo hoja.
Lanza un evento de auditoría
os.rename
con argumentossrc
,dst
,src_dir_fd
,dst_dir_fd
.Distinto en la versión 3.6: Acepta un path-like object para old y new.
- os.replace(src, dst, *, src_dir_fd=None, dst_dir_fd=None)¶
Cambie el nombre del archivo o directorio src a dst. Si dst no es un directorio vacío, se generará
OSError
. Si dst existe y es un archivo, se reemplazará de forma silenciosa si el usuario tiene permiso. La operación puede fallar si src y dst están en sistemas de archivos diferentes. Si tiene éxito, el cambio de nombre será una operación atómica (este es un requisito POSIX).Esta función puede admitir la especificación de src_dir_fd o dst_dir_fd para proporcionar rutas relativas a los descriptores de directorio.
Lanza un evento de auditoría
os.rename
con argumentossrc
,dst
,src_dir_fd
,dst_dir_fd
.Added in version 3.3.
Distinto en la versión 3.6: Acepta un path-like object para src y dst.
- os.rmdir(path, *, dir_fd=None)¶
Suprime (elimina) el directorio path. Si el directorio no existe o no está vacío, se genera un
FileNotFoundError
o unOSError
respectivamente. Para eliminar árboles de directorios completos, se puede utilizarshutil.rmtree()
.Esta función puede admitir rutas relativas a descriptores de directorio.
Lanza un evento de auditoría
os.rmdir
con argumentosruta
,dir_fd
.Distinto en la versión 3.3: Se agregó el parámetro dir_fd.
Distinto en la versión 3.6: Acepta un objeto tipo ruta.
- os.scandir(path='.')¶
Retorna un iterador de objetos
os.DirEntry
correspondientes a las entradas en el directorio dado por path. Las entradas se entregan en orden arbitrario, y las entradas especiales'.'
Y'..'
no están incluidas. Si un archivo es removido de o añadido al directorio después de crear el iterador, no se especifica si una entrada para el archivo será incluido.El uso de
scandir()
en lugar delistdir()
puede aumentar significativamente el rendimiento del código que también necesita información de tipo de archivo o atributo de archivo, porque: los objetosos.DirEntry
exponen esta información si el sistema operativo proporciona cuando escanea un directorio. Todos los métodosos.DirEntry
pueden realizar una llamada al sistema, perois_dir()
yis_file()
generalmente solo requieren una llamada al sistema para enlaces simbólicos;os.DirEntry.stat()
siempre requiere una llamada al sistema en Unix, pero solo requiere una para enlaces simbólicos en Windows.path puede ser un path-like object. Si path es de tipo
bytes
(directa o indirectamente a través de la interfazPathLike
), el tipo dename
y los atributospath
de cadaos.DirEntry
seránbytes
; en todas las demás circunstancias, serán del tipostr
.Esta función también puede admitir especificando un descriptor de archivo; el descriptor de archivo debe hacer referencia a un directorio.
Lanza un evento de auditoría
os.scandir
con argumentoruta
.El iterador
scandir()
admite el protocolo context manager y tiene el siguiente método:- scandir.close()¶
Cierre el iterador y libere los recursos adquiridos.
Esto se llama automáticamente cuando el iterador se agota o se recolecta basura, o cuando ocurre un error durante la iteración. Sin embargo, es aconsejable llamarlo explícitamente o utilizar la palabra clave
with
.Added in version 3.6.
El siguiente ejemplo muestra un uso simple de
scandir()
para mostrar todos los archivos (excepto los directorios) en la path dada que no comienzan con'.'
. La llamadaentry.is_file()
generalmente no realizará una llamada adicional al sistema:with os.scandir(path) as it: for entry in it: if not entry.name.startswith('.') and entry.is_file(): print(entry.name)
Nota
En los sistemas basados en Unix,
scandir()
usa las funciones opendir() y readdir() del sistema. En Windows, utiliza las funciones Win32 FindFirstFileW y FindNextFileW.Added in version 3.5.
Distinto en la versión 3.6: Se agregó compatibilidad con el protocolo context manager y el método
close()
. Si un iteradorscandir()
no se agota ni se cierra explícitamente, se emitirá unResourceWarning
en su destructor.La función acepta un path-like object.
Distinto en la versión 3.7: Soporte agregado para descriptores de archivo en Unix.
- class os.DirEntry¶
Objeto generado por
scandir()
para exponer la ruta del archivo y otros atributos de archivo de una entrada de directorio.scandir()
proporcionará tanta información como sea posible sin hacer llamadas adicionales al sistema. Cuando se realiza una llamada al sistemastat()
olstat()
, el objetoos.DirEntry
almacenará en caché el resultado.Las instancias
os.DirEntry
no están destinadas a ser almacenadas en estructuras de datos de larga duración; si sabe que los metadatos del archivo han cambiado o si ha transcurrido mucho tiempo desde la llamadascandir()
, llame aos.stat(entry.path)
para obtener información actualizada.Debido a que los métodos
os.DirEntry
pueden hacer llamadas al sistema operativo, también pueden generarOSError
. Si necesita un control muy preciso sobre los errores, puede detectarOSError
cuando llame a uno de los métodosos.DirEntry
y maneje según corresponda.Para ser directamente utilizable como path-like object,
os.DirEntry
implementa la interfazPathLike
.Los atributos y métodos en una instancia de
os.DirEntry
son los siguientes:- name¶
El nombre de archivo base de la entrada, relativo al argumento
scandir()
path.El atributo
name
serábytes
si el argumentoscandir()
path es de tipobytes
ystr
de lo contrario. Utilicefsdecode()
para decodificar los nombres de archivo de bytes.
- path¶
El nombre completo de la ruta de entrada: equivalente a
os.path.join(scandir_path, entry.name)
donde scandir_path es el argumentoscandir()
path. La ruta solo es absoluta si el argumentoscandir()
path fue absoluto. Si el argumentoscandir()
path era un descriptor de archivo, el atributopath
es el mismo que el atributoname
.El atributo
path
serábytes
si el argumentoscandir()
path es de tipobytes
ystr
de lo contrario. Utilicefsdecode()
para decodificar los nombres de archivo de bytes.
- inode()¶
Retorna el número de inodo de la entrada.
El resultado se almacena en caché en el objeto
os.DirEntry
. Useos.stat(entry.path, follow_symlinks=False).st_ino
para obtener información actualizada.En la primera llamada no almacenada en caché, se requiere una llamada del sistema en Windows pero no en Unix.
- is_dir(*, follow_symlinks=True)¶
Retorna
True
si esta entrada es un directorio o un enlace simbólico que apunta a un directorio; retornaFalse
si la entrada es o apunta a cualquier otro tipo de archivo, o si ya no existe.Si follow_symlinks es
False
, retornaTrue
solo si esta entrada es un directorio (sin seguir los enlaces simbólicos); retornaFalse
si la entrada es cualquier otro tipo de archivo o si ya no existe.El resultado se almacena en caché en el objeto
os.DirEntry
, con un caché separado para follow_symlinksTrue
yFalse
. Llame aos.stat()
junto constat.S_ISDIR()
para obtener información actualizada.En la primera llamada no almacenada en caché, no se requiere ninguna llamada al sistema en la mayoría de los casos. Específicamente, para los enlaces no simbólicos, ni Windows ni Unix requieren una llamada al sistema, excepto en ciertos sistemas de archivos Unix, como los sistemas de archivos de red, que retornan
dirent.d_type == DT_UNKNOWN
. Si la entrada es un enlace simbólico, se requerirá una llamada al sistema para seguir el enlace simbólico a menos que follow_symlinks seaFalse
.Este método puede generar
OSError
, comoPermissionError
, peroFileNotFoundError
se captura y no se genera.
- is_file(*, follow_symlinks=True)¶
Retorna
True
si esta entrada es un archivo o un enlace simbólico que apunta a un archivo; retornaFalse
si la entrada es o apunta a un directorio u otra entrada que no sea de archivo, o si ya no existe.Si follow_symlinks es
False
, retornaTrue
solo si esta entrada es un archivo (sin los siguientes enlaces simbólicos); retornaFalse
si la entrada es un directorio u otra entrada que no sea de archivo, o si ya no existe.El resultado se almacena en caché en el objeto
os.DirEntry
. El almacenamiento en caché, las llamadas realizadas al sistema y las excepciones generadas son las siguientesis_dir()
.
- is_symlink()¶
Retorna
True
si esta entrada es un enlace simbólico (incluso si está roto); retornaFalse
si la entrada apunta a un directorio o cualquier tipo de archivo, o si ya no existe.El resultado se almacena en caché en el objeto
os.DirEntry
. Llame aos.path.islink()
para obtener información actualizada.En la primera llamada no almacenada en caché, no se requiere ninguna llamada al sistema en la mayoría de los casos. Específicamente, ni Windows ni Unix requieren una llamada al sistema, excepto en ciertos sistemas de archivos Unix, como los sistemas de archivos de red, que retornan
dirent.d_type == DT_UNKNOWN
.Este método puede generar
OSError
, comoPermissionError
, peroFileNotFoundError
se captura y no se genera.
- is_junction()¶
Devuelve
True
si esta entrada es una unión (incluso si está rota); devuelveFalse
si la entrada apunta a un directorio normal, cualquier tipo de archivo, un enlace simbólico o si ya no existe.El resultado se almacena en caché en el objeto
os.DirEntry
. Llame aos.path.isjunction()
para obtener información actualizada.Added in version 3.12.
- stat(*, follow_symlinks=True)¶
Retorna un objeto a
stat_result
para esta entrada. Este método sigue enlaces simbólicos por defecto; para crear un enlace simbólico agregue el argumentofollow_symlinks=False
.En Unix, este método siempre requiere una llamada al sistema. En Windows, solo requiere una llamada al sistema si follow_symlinks es
True
y la entrada es un punto de análisis (por ejemplo, un enlace simbólico o una unión de directorio).En Windows, los atributos
st_ino
,st_dev
yst_nlink
destat_result
siempre se establecen en cero. Llame aos.stat()
para obtener estos atributos.El resultado se almacena en caché en el objeto
os.DirEntry
, con un caché separado para follow_symlinksTrue
yFalse
. Llame aos.stat()
para obtener información actualizada.
Tenga en cuenta que existe una buena correspondencia entre varios atributos y métodos de
os.DirEntry
ypathlib.Path
. En particular, el atributoname
tiene el mismo significado, al igual que los métodosis_dir()
,is_file()
,is_symlink()
,is_junction()
ystat()
.Added in version 3.5.
Distinto en la versión 3.6: Se agregó soporte para la interfaz
PathLike
. Se agregó soporte para rutas debytes
en Windows.Distinto en la versión 3.12: El atributo
st_ctime
de un resultado estadístico está obsoleto en Windows. La hora de creación del archivo está disponible correctamente comost_birthtime
y, en el futuro,st_ctime
puede cambiarse para que devuelva cero o la hora de cambio de metadatos, si está disponible.
- os.stat(path, *, dir_fd=None, follow_symlinks=True)¶
Obtener el estado de un archivo o un descriptor de archivo. Realice el equivalente de a llamada del sistema
stat()
en la ruta dada. path puede especificarse como una cadena o bytes, directa o indirectamente a través de la interfazPathLike
, o como un descriptor de archivo abierto. Retorna un objetostat_result
.Esta función normalmente sigue enlaces simbólicos; para crear un enlace simbólico agregue el argumento
follow_symlinks=False
, o uselstat()
.Esta función puede soportar especificando un descriptor de archivo y no siguen enlaces simbólicos.
En Windows, pasar
follow_symlinks=False
deshabilitará el seguimiento de todos los puntos de análisis sustitutos de nombre, que incluyen enlaces simbólicos y uniones de directorio. Se abrirán directamente otros tipos de puntos de análisis que no se parecen a los enlaces o que el sistema operativo no puede seguir. Al seguir una cadena de enlaces múltiples, esto puede dar como resultado que se retorna el enlace original en lugar del no enlace que impidió el recorrido completo. Para obtener resultados estadísticos para la ruta final en este caso, use la funciónos.path.realpath()
para resolver el nombre de la ruta lo más posible y llame alstat()
en el resultado. Esto no se aplica a enlaces simbólicos o puntos de unión colgantes, lo que lanzará las excepciones habituales.Ejemplo:
>>> import os >>> statinfo = os.stat('somefile.txt') >>> statinfo os.stat_result(st_mode=33188, st_ino=7876932, st_dev=234881026, st_nlink=1, st_uid=501, st_gid=501, st_size=264, st_atime=1297230295, st_mtime=1297230027, st_ctime=1297230027) >>> statinfo.st_size 264
Distinto en la versión 3.3: Se agregaron los parámetros dir_fd y follow_symlinks, especificando un descriptor de archivo en lugar de una ruta.
Distinto en la versión 3.6: Acepta un objeto tipo ruta.
Distinto en la versión 3.8: En Windows, ahora se siguen todos los puntos de análisis que el sistema operativo puede resolver, y pasar
follow_symlinks=False
desactiva los siguientes puntos de análisis sustitutos de nombre. Si el sistema operativo alcanza un punto de análisis que no puede seguir, stat ahora retorna la información de la ruta original como si se hubiera especificadofollow_symlinks=False
en lugar de generar un error.
- class os.stat_result¶
Objeto cuyos atributos corresponden aproximadamente a los miembros de la estructura
stat
. Se utiliza para el resultado deos.stat()
,os.fstat()
yos.lstat()
.Atributos:
- st_mode¶
Modo de archivo: tipo de archivo y bits de modo de archivo (permisos).
- st_ino¶
Dependiendo de la plataforma, pero si no es cero, identifica de forma exclusiva el archivo para un valor dado de
st_dev
. Típicamente:el número de inodo en Unix,
el índice del archivo en Windows
- st_dev¶
Identificador del dispositivo en el que reside este archivo.
- st_nlink¶
Número de enlaces duros.
- st_uid¶
Identificador de usuario del propietario del archivo.
- st_gid¶
Identificador de grupo del propietario del archivo.
- st_size¶
Tamaño del archivo en bytes, si es un archivo normal o un enlace simbólico. El tamaño de un enlace simbólico es la longitud del nombre de ruta que contiene, sin un byte nulo de terminación.
Marcas de tiempo:
- st_atime¶
Tiempo de acceso más reciente expresado en segundos.
- st_mtime¶
Tiempo de modificación de contenido más reciente expresado en segundos.
- st_ctime¶
Hora del cambio de metadatos más reciente expresado en segundos.
Distinto en la versión 3.12:
st_ctime
está obsoleto en Windows. Utilicest_birthtime
para indicar la hora de creación del archivo. En el futuro,st_ctime
contendrá la hora del cambio de metadatos más reciente, como en otras plataformas.
- st_atime_ns¶
Tiempo de acceso más reciente expresado en nanosegundos como un entero.
Added in version 3.3.
- st_mtime_ns¶
Hora de la modificación de contenido más reciente expresada en nanosegundos como un entero.
Added in version 3.3.
- st_ctime_ns¶
Hora del cambio de metadatos más reciente expresado en nanosegundos como un número entero.
Added in version 3.3.
Distinto en la versión 3.12:
st_ctime_ns
está obsoleto en Windows. Utilicest_birthtime_ns
para indicar la hora de creación del archivo. En el futuro,st_ctime
contendrá la hora del cambio de metadatos más reciente, como en otras plataformas.
- st_birthtime¶
Hora de creación del archivo expresada en segundos. Este atributo no siempre está disponible y puede generar el error
AttributeError
.Distinto en la versión 3.12:
st_birthtime
ahora está disponible en Windows.
- st_birthtime_ns¶
Hora de creación del archivo expresada en nanosegundos como un número entero. Este atributo no siempre está disponible y puede generar el error
AttributeError
.Added in version 3.12.
Nota
El significado y la resolución exactos de los atributos
st_atime
,st_mtime
,st_ctime
yst_birthtime
dependen del sistema operativo y del sistema de archivos. Por ejemplo, en los sistemas Windows que utilizan sistemas de archivos FAT32,st_mtime
tiene una resolución de 2 segundos yst_atime
tiene una resolución de solo 1 día. Consulte la documentación de su sistema operativo para obtener más detalles.De manera similar, aunque
st_atime_ns
,st_mtime_ns
,st_ctime_ns
yst_birthtime_ns
siempre se expresan en nanosegundos, muchos sistemas no proporcionan precisión en nanosegundos. En los sistemas que sí proporcionan precisión en nanosegundos, el objeto de punto flotante utilizado para almacenarst_atime
,st_mtime
,st_ctime
yst_birthtime
no puede conservarlo todo y, por lo tanto, será ligeramente inexacto. Si necesita las marcas de tiempo exactas, siempre debe utilizarst_atime_ns
,st_mtime_ns
,st_ctime_ns
yst_birthtime_ns
.En algunos sistemas Unix (como Linux), los siguientes atributos también pueden estar disponibles:
- st_blocks¶
Número de bloques de 512 bytes asignados para el archivo. Esto puede ser más pequeño que
st_size
/ 512 cuando el archivo tiene agujeros.
- st_blksize¶
Tamaño de bloque «preferido» para una eficiente E / S del sistema de archivos. Escribir en un archivo en fragmentos más pequeños puede causar una lectura-modificación-reescritura ineficiente.
- st_rdev¶
Tipo de dispositivo si es un dispositivo inodo.
- st_flags¶
Indicadores definidos por el usuario para el archivo.
En otros sistemas Unix (como FreeBSD), los siguientes atributos pueden estar disponibles (pero solo se pueden completar si la raíz intenta usarlos):
- st_gen¶
Número de generación de archivos.
En Solaris y derivados, los siguientes atributos también pueden estar disponibles:
- st_fstype¶
Cadena que identifica de forma exclusiva el tipo de sistema de archivos que contiene el archivo.
En los sistemas macOS, los siguientes atributos también pueden estar disponibles:
- st_rsize¶
Tamaño real del archivo.
- st_creator¶
Creador del archivo.
- st_type¶
Tipo de archivo.
En los sistemas Windows, los siguientes atributos también están disponibles:
- st_file_attributes¶
Atributos de archivo de Windows:
dwFileAttributes
miembro de la estructuraBY_HANDLE_FILE_INFORMATION
devuelta porGetFileInformationByHandle()
. Consulte las constantesFILE_ATTRIBUTE_* <stat.FILE_ATTRIBUTE_ARCHIVE>
en el módulostat
.Added in version 3.5.
- st_reparse_tag¶
Cuando
st_file_attributes
tieneFILE_ATTRIBUTE_REPARSE_POINT
configurado, este campo contiene la etiqueta que identifica el tipo de punto de análisis. Consulte las constantesIO_REPARSE_TAG_*
en el módulostat
.
El módulo estándar
stat
define funciones y constantes que son útiles para extraer información de una estructurastat
. (En Windows, algunos elementos se rellenan con valores ficticios).Para compatibilidad con versiones anteriores, también se puede acceder a una instancia
stat_result
como una tupla de al menos 10 números enteros que den los miembros más importantes (y portables) de la estructurastat
, en el ordenst_mode
,st_ino
,st_dev
,st_nlink
,st_uid
,st_gid
,st_size
,st_atime
,st_mtime
,st_ctime
. Algunas implementaciones pueden agregar más elementos al final. Para compatibilidad con versiones anteriores de Python, acceder astat_result
como una tupla siempre devuelve números enteros.Distinto en la versión 3.5: Windows ahora retorna el índice del archivo como
st_ino
cuando está disponible.Distinto en la versión 3.7: Se agregó el miembro
st_fstype
a Solaris/derivados.Distinto en la versión 3.8: Se agregó el miembro
st_reparse_tag
en Windows.Distinto en la versión 3.8: En Windows, el miembro
st_mode
ahora identifica archivos especiales comoS_IFCHR
,S_IFIFO
oS_IFBLK
según corresponda.Distinto en la versión 3.12: En Windows,
st_ctime
está obsoleto. Con el tiempo, contendrá la última hora de cambio de metadatos, para mantener la coherencia con otras plataformas, pero por ahora aún contiene la hora de creación. Utilicest_birthtime
para la hora de creación.En Windows,
st_ino
puede tener hasta 128 bits, según el sistema de archivos. Antes no superaba los 64 bits y los identificadores de archivos más grandes se empaquetaban de forma arbitraria.En Windows,
st_rdev
ya no devuelve un valor. Antes contenía el mismo valor quest_dev
, lo cual era incorrecto.Se agregó el miembro
st_birthtime
en Windows.
- os.statvfs(path)¶
Realizar una llamada al sistema
statvfs()
en la ruta indicada. El valor de retorno es un objeto cuyos atributos describen el sistema de archivos en la ruta indicada y corresponden a los miembros de la estructurastatvfs
, a saber:f_bsize
,f_frsize
,f_blocks
,f_bfree
,f_bavail
,f_files
,f_ffree
,f_favail
,f_flag
,f_namemax
,f_fsid
.Se definen dos constantes de nivel de módulo para: indicadores de bit del atributo
f_flag
: siST_RDONLY
está configurado, el sistema de archivos está montado de solo lectura, y siST_NOSUID
está configurado, el la semántica de los bits setuid/setgid está deshabilitada o no es compatible.Se definen constantes de nivel de módulo adicionales para sistemas basados en GNU / glibc. Estos son
ST_NODEV
(no permitir el acceso a archivos especiales del dispositivo),ST_NOEXEC
(no permitir la ejecución del programa),ST_SYNCHRONOUS
(las escrituras se sincronizan a la vez),ST_MANDLOCK
( permitir bloqueos obligatorios en un FS),ST_WRITE
(escribir en el archivo/directorio/enlace simbólico),ST_APPEND
(archivo de solo agregado),ST_IMMUTABLE
(archivo inmutable),ST_NOATIME
(no actualiza los tiempos de acceso),ST_NODIRATIME
(no actualiza los tiempos de acceso al directorio),ST_RELATIME
(tiempo de actualización relativo a mtime/ctime).Esta función puede soportar especificando un descriptor de archivo.
Availability: Unix.
Distinto en la versión 3.2: Se agregaron las constantes
ST_RDONLY
yST_NOSUID
.Distinto en la versión 3.3: Se agregó soporte para especificar path como un descriptor de archivo abierto.
Distinto en la versión 3.4: El
ST_NODEV
,ST_NOEXEC
,ST_SYNCHRONOUS
,ST_MANDLOCK
,ST_WRITE
,ST_APPEND
,ST_IMMUTABLE
,ST_NOATIME
,ST_NODIRATIME
, yST_RELATIME
se agregaron constantes.Distinto en la versión 3.6: Acepta un objeto tipo ruta.
Distinto en la versión 3.7: Se agrega el atributo
f_fsid
.
- os.supports_dir_fd¶
A objeto
set
que indica qué funciones en el móduloos
aceptan un descriptor de archivo abierto para su parámetro dir_fd. Las diferentes plataformas proporcionan características diferentes, y la funcionalidad subyacente que Python usa para implementar el parámetro dir_fd no está disponible en todas las plataformas que admite Python. En aras de la coherencia, las funciones que pueden admitir dir_fd siempre permiten especificar el parámetro, pero lanzarán una excepción si la funcionalidad se utiliza cuando no está disponible localmente. (EspecificarNone
para dir_fd siempre es compatible con todas las plataformas).Para verificar si una función particular acepta un descriptor de archivo abierto para su parámetro dir_fd, use el operador
in
ensupports_dir_fd
. Como ejemplo, esta expresión se evalúa comoTrue
sios.stat()
acepta descriptores de archivos abiertos para dir_fd en la plataforma local:os.stat en os.supports_dir_fd
Actualmente, los parámetros dir_fd solo funcionan en plataformas Unix; ninguno de ellos funciona en Windows.
Added in version 3.3.
- os.supports_effective_ids¶
Un objeto
set
que indica sios.access()
permite especificarTrue
para su parámetro fective_ids en la plataforma local. (EspecificarFalse
para effective_id siempre es compatible con todas las plataformas). Si la plataforma local lo admite, la colección contendráos.access()
; de lo contrario estará vacío.Esta expresión se evalúa como
True
sios.access()
admiteeffective_id=True
en la plataforma local:os.access en os.supports_effective_ids
Actualmente, effective_ids solo es compatible con plataformas Unix; No funciona en Windows.
Added in version 3.3.
- os.supports_fd¶
A objeto
set
que indica qué funciones en el móduloos
permiten especificar su parámetro path como un descriptor de archivo abierto en la plataforma local. Las diferentes plataformas proporcionan características diferentes, y la funcionalidad subyacente que Python utiliza para aceptar descriptores de archivos abiertos como argumentos path no está disponible en todas las plataformas que admite Python.Para determinar si una función en particular permite especificar un descriptor de archivo abierto para su parámetro path, use el operador
in
ensupports_fd
. Como ejemplo, esta expresión se evalúa comoTrue
sios.chdir()
acepta descriptores de archivo abiertos para path en su plataforma local:os.chdir en os.supports_fd
Added in version 3.3.
- os.supports_follow_symlinks¶
Un objeto
set
que indica qué funciones en el móduloos
aceptanFalse
para su parámetro follow_symlinks en la plataforma local. Las diferentes plataformas proporcionan características diferentes, y la funcionalidad subyacente que Python usa para implementar follow_symlinks no está disponible en todas las plataformas que admite Python. En aras de la coherencia, las funciones que pueden admitir follow_symlinks siempre permiten especificar el parámetro, pero arrojarán una excepción si la funcionalidad se utiliza cuando no está disponible localmente. (EspecificarTrue
para follow_symlinks siempre se admite en todas las plataformas).Para verificar si una función particular acepta
False
para su parámetro follow_symlinks, use el operadorin
ensupports_follow_symlinks
. Como ejemplo, esta expresión se evalúa comoTrue
si puede especificarfollow_symlinks=False
al llamar aos.stat()
en la plataforma local:os.stat en os.supports_follow_symlinks
Added in version 3.3.
- os.symlink(src, dst, target_is_directory=False, *, dir_fd=None)¶
Cree un enlace simbólico que apunte a src llamado dst.
En Windows, un enlace simbólico representa un archivo o un directorio, y no se transforma dinámicamente en el destino. Si el objetivo está presente, el tipo de enlace simbólico se creará para que coincida. De lo contrario, el enlace simbólico se creará como un directorio si target_is_directory es
True
o un enlace simbólico de archivo (el valor predeterminado) de lo contrario. En plataformas que no son de Windows, target_is_directory se ignora.Esta función puede admitir rutas relativas a descriptores de directorio.
Nota
En las versiones más recientes de Windows 10, las cuentas sin privilegios pueden crear enlaces simbólicos si el Modo desarrollador está habilitado. Cuando el Modo desarrollador no está disponible / habilitado, se requiere el privilegio SeCreateSymbolicLinkPrivilege, o el proceso debe ejecutarse como administrador.
OSError
se lanza cuando un usuario sin privilegios llama a la función.Lanza un evento de auditoría
os.symlink
con argumentossrc
,dst
,dir_fd
.Availability: Unix, Windows.
La función está limitada en WASI, consulte Plataformas WebAssembly para obtener más información.
Distinto en la versión 3.2: Se agregó soporte para enlaces simbólicos de Windows 6.0 (Vista).
Distinto en la versión 3.3: Se agregó el parámetro dir_fd y ahora se permite target_is_directory en plataformas que no sean Windows.
Distinto en la versión 3.6: Acepta un path-like object para src y dst.
Distinto en la versión 3.8: Se agregó soporte para enlaces simbólicos sin elevar en Windows con el modo de desarrollador.
- os.sync()¶
Forzar la escritura de todo en el disco.
Availability: Unix.
Added in version 3.3.
- os.truncate(path, length)¶
Trunca el archivo correspondiente a path, para que tenga como máximo length bytes de tamaño.
Esta función puede soportar especificando un descriptor de archivo.
Lanza un evento de auditoría
os.truncate
con argumentospath
,length
.Availability: Unix, Windows.
Added in version 3.3.
Distinto en la versión 3.5: Se agregó soporte para Windows
Distinto en la versión 3.6: Acepta un objeto tipo ruta.
- os.unlink(path, *, dir_fd=None)¶
Elimina (elimine) el archivo path. Esta función es semánticamente idéntica a
remove()
; El nombreunlink
es su nombre tradicional de Unix. Consulte la documentación deremove()
para obtener más información.Lanza un evento de auditoría
os.remove
con argumentosruta
,dir_fd
.Distinto en la versión 3.3: Se agregó el parámetro dir_fd.
Distinto en la versión 3.6: Acepta un objeto tipo ruta.
- os.utime(path, times=None, *, [ns, ]dir_fd=None, follow_symlinks=True)¶
Establece el acceso y los tiempos modificados del archivo especificado por path.
utime()
toma dos parámetros opcionales, times y ns. Estos especifican los tiempos establecidos en path y se utilizan de la siguiente manera:Si se especifica ns, debe ser una tupla de 2 de la forma
(atime_ns, mtime_ns)
donde cada miembro es un int que expresa nanosegundos.Si times no es
None
, debe ser una 2-tupla de la forma(atime, mtime)
donde cada miembro es un int o flotante que expresa segundos.Si times es
None
y ns no está especificado, esto es equivalente a especificarns=(atime_ns, mtime_ns)
donde ambas horas son la hora actual.
Es un error especificar tuplas para times y ns.
Tenga en cuenta que es posible que las horas exactas que establezca aquí no se devuelvan en una llamada
stat()
posterior, dependiendo de la resolución con la que su sistema operativo registre las horas de acceso y modificación; verstat()
. La mejor manera de conservar las horas exactas es usar los campos st_atime_ns y st_mtime_ns del objeto de resultadoos.stat()
con el parámetro ns autime()
.Esta función puede soportar especificando un descriptor de archivo, rutas relativas a los descriptores de directorio y no seguir enlaces simbólicos.
Lanza un evento de auditoría
os.utime
con argumentospath
,times
,ns
,dir_fd
.Distinto en la versión 3.3: Se agregó soporte para especificar path como un descriptor de archivo abierto, y los parámetros dir_fd, follow_symlinks y ns.
Distinto en la versión 3.6: Acepta un objeto tipo ruta.
- os.walk(top, topdown=True, onerror=None, followlinks=False)¶
Genere los nombres de archivo en un árbol de directorios recorriendo el árbol de arriba hacia abajo o de abajo hacia arriba. Para cada directorio en el árbol enraizado en el directorio top (incluido top), produce una tupla de 3 tuplas
(dirpath, dirnames, filenames)
.dirpath es una cadena, la ruta al directorio. dirnames es una lista de los nombres de los subdirectorios en dirpath (incluidos los enlaces simbólicos a los directorios y excluyendo
'.'
y'..'
). filenames es una lista de los nombres de los archivos que no son de directorio en dirpath. Tenga en cuenta que los nombres de las listas no contienen componentes de ruta. Para obtener una ruta completa (que comienza con top) a un archivo o directorio en dirpath, ejecuteos.path.join(dirpath, name)
. Que las listas estén ordenadas o no depende del sistema de archivos. Si un archivo se elimina o se agrega al directorio dirpath durante la generación de las listas, no se especifica si se incluirá un nombre para ese archivo.Si el argumento opcional topdown es
True
o no se especifica, el triple para un directorio se genera antes de triplicarse para cualquiera de sus subdirectorios (los directorios se generan de arriba hacia abajo). Si topdown esFalse
, el triple para un directorio se genera después de los triples para todos sus subdirectorios (los directorios se generan de abajo hacia arriba). No importa el valor de topdown, la lista de subdirectorios se recupera antes de que se generen las tuplas para el directorio y sus subdirectorios.Cuando topdown es
True
, la persona que llama puede modificar la lista dirnames en su lugar (quizás usandodel
o asignación de corte) ywalk()
solo se repetirá en los subdirectorios cuyos nombres permanecen en dirnames; Esto se puede utilizar para podar la búsqueda, imponer un orden específico de visitas o incluso para informarwalk()
sobre los directorios que la persona que llama crea o renombra antes de que se reanudewalk()
nuevamente. La modificación de dirnames cuando topdown esFalse
no tiene ningún efecto en el comportamiento de la caminata, porque en el modo ascendente los directorios en dirnames se generan antes de que se genere dirpath.Por defecto, los errores de la llamada
scandir()
se ignoran. Si se especifica el argumento opcional onerror, debería ser una función; se llamará con un argumento, una instanciaOSError
. Puede informar el error para continuar con la caminata, o generar la excepción para abortar la caminata. Tenga en cuenta que el nombre de archivo está disponible como el atributofilename
del objeto de excepción.Por defecto,
walk()
no entrará en enlaces simbólicos que se resuelven en directorios. Establece followlinks enTrue
para visitar los directorios señalados por los enlaces simbólicos, en los sistemas que los admiten.Nota
Tenga en cuenta que establecer followlinks en
True
puede conducir a una recursión infinita si un enlace apunta a un directorio padre de sí mismo.walk()
no realiza un seguimiento de los directorios que ya visitó.Nota
Si pasa un nombre de ruta relativo, no cambie el directorio de trabajo actual entre las reanudaciones de
walk()
.walk()
nunca cambia el directorio actual, y supone que la persona que llama tampoco.This example displays the number of bytes taken by non-directory files in each directory under the starting directory, except that it doesn’t look under any
__pycache__
subdirectory:import os from os.path import join, getsize for root, dirs, files in os.walk('python/Lib/xml'): print(root, "consumes", end=" ") print(sum(getsize(join(root, name)) for name in files), end=" ") print("bytes in", len(files), "non-directory files") if '__pycache__' in dirs: dirs.remove('__pycache__') # don't visit __pycache__ directories
En el siguiente ejemplo (implementación simple de
shutil.rmtree()
), recorrer el árbol de abajo hacia arriba es esencial,rmdir()
no permite eliminar un directorio antes de que el directorio esté vacío:# Delete everything reachable from the directory named in "top", # assuming there are no symbolic links. # CAUTION: This is dangerous! For example, if top == '/', it # could delete all your disk files. import os for root, dirs, files in os.walk(top, topdown=False): for name in files: os.remove(os.path.join(root, name)) for name in dirs: os.rmdir(os.path.join(root, name)) os.rmdir(top)
Lanza un evento de auditoría
os.spawn
con argumentostop
,topdown
,onerror
,followlinks
.Distinto en la versión 3.5: Esta función ahora llama
os.scandir()
en lugar deos.listdir()
, lo que lo hace más rápido al reducir el número de llamadas aos.stat()
.Distinto en la versión 3.6: Acepta un objeto tipo ruta.
- os.fwalk(top='.', topdown=True, onerror=None, *, follow_symlinks=False, dir_fd=None)¶
Esto se comporta exactamente como
walk()
, excepto que produce 4 tuplas(dirpath, dirnames, filenames, dirfd)
, y admitedir_fd
.dirpath, dirnames y filenames son idénticos a
walk()
output, y dirfd es un descriptor de archivo que se refiere al directorio dirpath.Esta función siempre admite rutas relativas a descriptores de directorio y no siguen enlaces simbólicos. Sin embargo, tenga en cuenta que, a diferencia de otras funciones, el valor predeterminado
fwalk()
para follow_symlinks esFalse
.Nota
Dado que
fwalk()
produce descriptores de archivo, estos solo son válidos hasta el siguiente paso de iteración, por lo que debe duplicarlos (por ejemplo, condup()
) si desea mantenerlos más tiempo.This example displays the number of bytes taken by non-directory files in each directory under the starting directory, except that it doesn’t look under any
__pycache__
subdirectory:import os for root, dirs, files, rootfd in os.fwalk('python/Lib/xml'): print(root, "consumes", end=" ") print(sum([os.stat(name, dir_fd=rootfd).st_size for name in files]), end=" ") print("bytes in", len(files), "non-directory files") if '__pycache__' in dirs: dirs.remove('__pycache__') # don't visit __pycache__ directories
En el siguiente ejemplo, recorrer el árbol de abajo hacia arriba es esencial:
rmdir()
no permite eliminar un directorio antes de que el directorio esté vacío:# Borre todo lo que sea accesible desde el directorio nombrado en "top", # asumiendo que no hay enlaces simbólicos. # PRECAUCIÓN: ¡Esto es peligroso! Por ejemplo, si top == '/', # podría borrar todos los archivos de su disco. import os for root, dirs, files, rootfd in os.fwalk(top, topdown=False): for name in files: os.unlink(name, dir_fd=rootfd) for name in dirs: os.rmdir(name, dir_fd=rootfd)
Lanza un evento de auditoría
os.chown
con argumentostop
,topdown
,onerror
,follow_symlinks
,dir_fd
.Availability: Unix.
Added in version 3.3.
Distinto en la versión 3.6: Acepta un objeto tipo ruta.
Distinto en la versión 3.7: Se agregó soporte para rutas de acceso
bytes
.
- os.memfd_create(name[, flags=os.MFD_CLOEXEC])¶
Cree un archivo anónimo y retorna un descriptor de archivo que se refiera a él. flags debe ser una de las constantes
os.MFD_*
disponibles en el sistema (o una combinación ORed bit a bit de ellas). Por defecto, el nuevo descriptor de archivo es no heredable.El nombre proporcionado en name se utiliza como nombre de archivo y se mostrará como el destino del enlace simbólico correspondiente en el directorio
/proc/self/fd/
. El nombre que se muestra siempre tiene el prefijomemfd:
y solo sirve para fines de depuración. Los nombres no afectan el comportamiento del descriptor de archivo y, como tal, varios archivos pueden tener el mismo nombre sin efectos secundarios.Availability: Linux >= 3.17 with glibc >= 2.27.
Added in version 3.8.
- os.MFD_CLOEXEC¶
- os.MFD_ALLOW_SEALING¶
- os.MFD_HUGETLB¶
- os.MFD_HUGE_SHIFT¶
- os.MFD_HUGE_MASK¶
- os.MFD_HUGE_64KB¶
- os.MFD_HUGE_512KB¶
- os.MFD_HUGE_1MB¶
- os.MFD_HUGE_2MB¶
- os.MFD_HUGE_8MB¶
- os.MFD_HUGE_16MB¶
- os.MFD_HUGE_32MB¶
- os.MFD_HUGE_256MB¶
- os.MFD_HUGE_512MB¶
- os.MFD_HUGE_1GB¶
- os.MFD_HUGE_2GB¶
- os.MFD_HUGE_16GB¶
Estas flags se pueden pasar a
memfd_create()
.Availability: Linux >= 3.17 with glibc >= 2.27
Las banderas
MFD_HUGE*
solo están disponibles desde Linux 4.14.Added in version 3.8.
- os.eventfd(initval[, flags=os.EFD_CLOEXEC])¶
Crea y retorna un descriptor de archivo de eventos. Los descriptores de archivo admiten
read()
ywrite()
sin procesar con un tamaño de búfer de 8,select()
,poll()
y similares. Consulte la página de manual eventfd(2) para obtener más información. De forma predeterminada, el nuevo descriptor de archivo no es heredable.initval es el valor inicial del contador de eventos. El valor inicial debe ser un entero sin signo de 32 bits. Tenga en cuenta que el valor inicial está limitado a un entero sin signo de 32 bits, aunque el contador de eventos es un entero sin signo de 64 bits con un valor máximo de 264-2.
flags se puede construir a partir de
EFD_CLOEXEC
,EFD_NONBLOCK
yEFD_SEMAPHORE
.Si se especifica
EFD_SEMAPHORE
y el contador de eventos no es cero,eventfd_read()
retorna 1 y reduce el contador en uno.Si no se especifica
EFD_SEMAPHORE
y el contador de eventos no es cero,eventfd_read()
retorna el valor actual del contador de eventos y restablece el contador a cero.Si el contador de eventos es cero y no se especifica
EFD_NONBLOCK
,eventfd_read()
se bloquea.eventfd_write()
incrementa el contador de eventos. Escribe bloques si la operación de escritura incrementaría el contador a un valor mayor que 64-2.Ejemplo:
import os # semáforo con valor inicial '1' fd = os.eventfd(1, os.EFD_SEMAPHORE | os.EFC_CLOEXEC) try: # adquirir semáforo v = os.eventfd_read(fd) try: do_work() finally: # liberar semáforo os.eventfd_write(fd, v) finally: os.close(fd)
Availability: Linux >= 2.6.27 with glibc >= 2.8
Added in version 3.10.
- os.eventfd_read(fd)¶
Lee el valor de un descriptor de archivo
eventfd()
y retorna un int sin signo de 64 bits. La función no verifica que fd sea uneventfd()
.Availability: Linux >= 2.6.27
Added in version 3.10.
- os.eventfd_write(fd, value)¶
Agregue valor a un descriptor de archivo
eventfd()
. value debe ser un int sin signo de 64 bits. La función no verifica que fd sea uneventfd()
.Availability: Linux >= 2.6.27
Added in version 3.10.
- os.EFD_CLOEXEC¶
Establezca el indicador close-on-exec para el nuevo descriptor de archivo
eventfd()
.Availability: Linux >= 2.6.27
Added in version 3.10.
- os.EFD_NONBLOCK¶
Establezca el indicador de estado
O_NONBLOCK
para el nuevo descriptor de archivoeventfd()
.Availability: Linux >= 2.6.27
Added in version 3.10.
- os.EFD_SEMAPHORE¶
Proporcionar semántica similar a la de un semáforo para las lecturas desde un descriptor de archivo
eventfd()
. Al leer, el contador interno se reduce en uno.Availability: Linux >= 2.6.30
Added in version 3.10.
Descriptores de archivos del temporizador¶
Added in version 3.13.
Estas funciones brindan soporte para la API timer file descriptor de Linux. Naturalmente, todas ellas solo están disponibles en Linux.
- os.timerfd_create(clockid, /, *, flags=0)¶
Crea y devuelve un descriptor de archivo de temporizador (timerfd).
El descriptor de archivo devuelto por
timerfd_create()
admite:El método
read()
del descriptor de archivo se puede llamar con un tamaño de búfer de 8. Si el temporizador ya ha expirado una o más veces,read()
devuelve la cantidad de expiraciones con el orden de bytes del host, que se puede convertir aint
medianteint.from_bytes(x, byteorder=sys.byteorder)
.Se pueden usar
select()
ypoll()
para esperar hasta que el temporizador expire y el descriptor de archivo sea legible.clockid debe ser un clock ID válido, como se define en el módulo
time
:time.CLOCK_BOOTTIME
(desde Linux 3.15 para timerfd_create)
Si clockid es
time.CLOCK_REALTIME
, se utiliza un reloj de tiempo real configurable para todo el sistema. Si se modifica el reloj del sistema, es necesario actualizar la configuración del temporizador. Para cancelar el temporizador cuando se modifica el reloj del sistema, consulteTFD_TIMER_CANCEL_ON_SET
.Si clockid es
time.CLOCK_MONOTONIC
, se utiliza un reloj que aumenta de forma monótona y no se puede configurar. Incluso si se cambia el reloj del sistema, la configuración del temporizador no se verá afectada.Si clockid es
time.CLOCK_BOOTTIME
, igual quetime.CLOCK_MONOTONIC
excepto que incluye cualquier momento en que el sistema esté suspendido.El comportamiento del descriptor de archivo se puede modificar especificando un valor flags. Se puede utilizar cualquiera de las siguientes variables, combinadas mediante OR bit a bit (el operador
|
):Si
TFD_NONBLOCK
no está configurado como indicador,read()
se bloquea hasta que el temporizador expire. Si está configurado como indicador,read()
no se bloquea, pero si no ha habido una expiración desde la última llamada para leer,read()
generaOSError
yerrno
se configura comoerrno.EAGAIN
.Python siempre establece
TFD_CLOEXEC
automáticamente.El descriptor de archivo debe cerrarse con
os.close()
cuando ya no sea necesario, de lo contrario se filtrará.Ver también
La página del manual timerfd_create(2).
Availability: Linux >= 2.6.27 with glibc >= 2.8
Added in version 3.13.
- os.timerfd_settime(fd, /, *, flags=flags, initial=0.0, interval=0.0)¶
Modificar el temporizador interno de un descriptor de archivo de temporizador. Esta función opera con el mismo temporizador de intervalos que
timerfd_settime_ns()
.fd debe ser un descriptor de archivo de temporizador válido.
El comportamiento del temporizador se puede modificar especificando un valor flags. Se puede utilizar cualquiera de las siguientes variables, combinadas mediante OR bit a bit (el operador
|
):El temporizador se desactiva al configurar initial en cero (
0
). Si initial es igual o mayor que cero, el temporizador se activa. Si initial es menor que cero, genera una excepciónOSError
conerrno
configurado enerrno.EINVAL
De forma predeterminada, el temporizador se activará cuando transcurran initial segundos. (Si initial es cero, el temporizador se activará inmediatamente).
Sin embargo, si se establece el indicador
TFD_TIMER_ABSTIME
, el temporizador se activará cuando el reloj del temporizador (establecido por clockid entimerfd_create()
) alcance los initial segundos.El intervalo del temporizador se establece mediante interval
float
. Si interval es cero, el temporizador solo se activa una vez, en la expiración inicial. Si interval es mayor que cero, el temporizador se activa cada vez que transcurren interval segundos desde la expiración anterior. Si interval es menor que cero, generaOSError
conerrno
establecido enerrno.EINVAL
Si el indicador
TFD_TIMER_CANCEL_ON_SET
se configura junto conTFD_TIMER_ABSTIME
y el reloj de este temporizador estime.CLOCK_REALTIME
, el temporizador se marca como cancelable si el reloj de tiempo real se modifica de manera discontinua. La lectura del descriptor se cancela con el error ECANCELED.Linux administra el reloj del sistema como UTC. La transición al horario de verano se realiza modificando únicamente la diferencia horaria y no provoca cambios discontinuos en el reloj del sistema.
El cambio discontinuo del reloj del sistema será causado por los siguientes eventos:
settimeofday
clock_settime
Establezca la fecha y la hora del sistema mediante el comando
date
Devuelve una tupla de dos elementos de (
next_expiration
,interval
) del estado del temporizador anterior, antes de que se ejecutara esta función.Ver también
timerfd_create(2), timerfd_settime(2), settimeofday(2), clock_settime(2), y date(1).
Availability: Linux >= 2.6.27 with glibc >= 2.8
Added in version 3.13.
- os.timerfd_settime_ns(fd, /, *, flags=0, initial=0, interval=0)¶
Similar a
timerfd_settime()
, pero utiliza el tiempo en nanosegundos. Esta función opera con el mismo temporizador de intervalos quetimerfd_settime()
.Availability: Linux >= 2.6.27 with glibc >= 2.8
Added in version 3.13.
- os.timerfd_gettime(fd, /)¶
Devuelve una tupla de dos elementos de flotantes (
next_expiration
,interval
).next_expiration
indica el tiempo relativo hasta que el temporizador se vuelva a activar, independientemente de si el indicadorTFD_TIMER_ABSTIME
está configurado.interval
indica el intervalo del temporizador. Si es cero, el temporizador se activará solo una vez, después de que transcurrannext_expiration
segundos.Ver también
Availability: Linux >= 2.6.27 with glibc >= 2.8
Added in version 3.13.
- os.timerfd_gettime_ns(fd, /)¶
Similar a
timerfd_gettime()
, pero devuelve el tiempo en nanosegundos.Availability: Linux >= 2.6.27 with glibc >= 2.8
Added in version 3.13.
- os.TFD_NONBLOCK¶
Un indicador para la función
timerfd_create()
, que establece el indicador de estadoO_NONBLOCK
para el nuevo descriptor de archivo del temporizador. SiTFD_NONBLOCK
no está establecido como indicador,read()
se bloquea.Availability: Linux >= 2.6.27 with glibc >= 2.8
Added in version 3.13.
- os.TFD_CLOEXEC¶
Una bandera para la función
timerfd_create()
. SiTFD_CLOEXEC
está configurado como bandera, establece la bandera de cierre al ejecutar para el nuevo descriptor de archivo.Availability: Linux >= 2.6.27 with glibc >= 2.8
Added in version 3.13.
- os.TFD_TIMER_ABSTIME¶
Indicador para las funciones
timerfd_settime()
ytimerfd_settime_ns()
. Si se establece este indicador, initial se interpreta como un valor absoluto en el reloj del temporizador (en segundos UTC o nanosegundos desde la época Unix).Availability: Linux >= 2.6.27 with glibc >= 2.8
Added in version 3.13.
- os.TFD_TIMER_CANCEL_ON_SET¶
Una bandera para las funciones
timerfd_settime()
ytimerfd_settime_ns()
junto conTFD_TIMER_ABSTIME
. El temporizador se cancela cuando la hora del reloj subyacente cambia de manera discontinua.Availability: Linux >= 2.6.27 with glibc >= 2.8
Added in version 3.13.
Atributos extendidos de Linux¶
Added in version 3.3.
Estas funciones están disponibles solo en Linux.
- os.getxattr(path, attribute, *, follow_symlinks=True)¶
Retorna el valor del atributo del sistema de archivos extendido atrribute para path. attribute puede ser bytes o str (directa o indirectamente a través de la interfaz
PathLike
). Si es str, se codifica con la codificación del sistema de archivos.Esta función puede soportar especificando un descriptor de archivo y no siguen enlaces simbólicos.
Lanza un evento de auditoría
os.getxattr
con argumentospath
,atributo
.Distinto en la versión 3.6: Acepta un path-like object para path*y *attribute.
- os.listxattr(path=None, *, follow_symlinks=True)¶
Retorna una lista de los atributos del sistema de archivos extendido en path. Los atributos en la lista se representan como cadenas decodificadas con la codificación del sistema de archivos. Si path es
None
,listxattr()
examinará el directorio actual.Esta función puede soportar especificando un descriptor de archivo y no siguen enlaces simbólicos.
Lanza un evento de auditoría
os.listxattr
con el argumentopath
.Distinto en la versión 3.6: Acepta un objeto tipo ruta.
- os.removexattr(path, attribute, *, follow_symlinks=True)¶
Elimina el atributo extendido del sistema de archivos attribute de path. attribute debe ser bytes o str (directa o indirectamente a través de la interfaz
PathLike
). Si es una cadena, está codificada con filesystem encoding and error handler.Esta función puede soportar especificando un descriptor de archivo y no siguen enlaces simbólicos.
Lanza un evento de auditoría
os.removexattr
con argumentospath
,attribute
.Distinto en la versión 3.6: Acepta un path-like object para path*y *attribute.
- os.setxattr(path, attribute, value, flags=0, *, follow_symlinks=True)¶
Establece el atributo del sistema de archivos extendido attribute en path en value. attribute debe ser un bytes o una cadena sin NUL incrustados (directa o indirectamente a través de la interfaz
PathLike
). Si es una cadena, está codificado con filesystem encoding and error handler. flags puede serXATTR_REPLACE
oXATTR_CREATE
. Si se proporcionaXATTR_REPLACE
y el atributo no existe, se lanzaráENODATA
. Si se proporcionaXATTR_CREATE
y el atributo ya existe, no se creará el atributo y se lanzaEEXISTS
.Esta función puede soportar especificando un descriptor de archivo y no siguen enlaces simbólicos.
Nota
Un error en las versiones de kernel de Linux anteriores a 2.6.39 hizo que el argumento de las flags se ignorara en algunos sistemas de archivos.
Lanza un evento de auditoría
os.setxattr
con argumentospath
,attribute
,value
,flags
.Distinto en la versión 3.6: Acepta un path-like object para path*y *attribute.
- os.XATTR_SIZE_MAX¶
El tamaño máximo que puede tener el valor de un atributo extendido. Actualmente, esto es 64 KiB en Linux.
- os.XATTR_CREATE¶
Este es un valor posible para el argumento flags en
setxattr()
. Indica que la operación debe crear un atributo.
- os.XATTR_REPLACE¶
Este es un valor posible para el argumento flags en
setxattr()
. Indica que la operación debe reemplazar un atributo existente.
Gestión de proceso¶
Estas funciones pueden usarse para crear y administrar procesos.
Las varias funciones exec *
toman una lista de argumentos para el nuevo programa cargado en el proceso. En cada caso, el primero de estos argumentos se pasa al nuevo programa como su propio nombre en lugar de como un argumento que un usuario puede haber escrito en una línea de comando. Para el programador C, este es el argv[0]
pasado a un programa main()
. Por ejemplo, os.execv('/bin/echo', ['foo', 'bar'])
solo imprimirá bar
en la salida estándar; foo
parecerá ignorado.
- os.abort()¶
Genere una señal
SIGABRT
para el proceso actual. En Unix, el comportamiento predeterminado es producir un volcado de núcleo; en Windows, el proceso retorna inmediatamente un código de salida de3
. Tenga en cuenta que llamar a esta función no llamará al controlador de señal Python registrado paraSIGABRT
consignal.signal()
.
- os.add_dll_directory(path)¶
Agregue una ruta a la ruta de búsqueda de DLL.
Esta ruta de búsqueda se utiliza al resolver dependencias para módulos de extensión importados (el propio módulo se resuelve mediante
sys.path
) y también mediantectypes
.Elimina el directorio llamando a close() en el objeto retornado o utilizándolo en una
with
instrucción.Consulte la documentación de Microsoft para obtener más información sobre cómo se cargan las DLL.
Lanza un evento de auditoría
os.add_dll_directory
con el argumentopath
.Availability: Windows.
Added in version 3.8: Las versiones anteriores de CPython resolverían las DLL utilizando el comportamiento predeterminado para el proceso actual. Esto condujo a inconsistencias, como solo a veces buscar
PATH
o el directorio de trabajo actual, y las funciones del sistema operativo comoAddDllDirectory
no tienen ningún efecto.En 3.8, las dos formas principales en que se cargan las DLL ahora anulan explícitamente el comportamiento de todo el proceso para garantizar la coherencia. Ver el notas de portabilidad para obtener información sobre la actualización de bibliotecas.
- os.execl(path, arg0, arg1, ...)¶
- os.execle(path, arg0, arg1, ..., env)¶
- os.execlp(file, arg0, arg1, ...)¶
- os.execlpe(file, arg0, arg1, ..., env)¶
- os.execv(path, args)¶
- os.execve(path, args, env)¶
- os.execvp(file, args)¶
- os.execvpe(file, args, env)¶
Todas estas funciones ejecutan un nuevo programa, reemplazando el proceso actual; No vuelven. En Unix, el nuevo ejecutable se carga en el proceso actual y tendrá la misma identificación de proceso que la persona que llama. Los errores se informarán como excepciones
OSError
.El proceso actual se reemplaza inmediatamente. Los objetos de archivo abierto y los descriptores no se vacían, por lo que si puede haber datos almacenados en estos archivos abiertos, debe limpiarlos usando
sys.stdout.flush()
oos.fsync()
antes de llamar aexec*
función.Las variantes «l» y «v» de las funciones
exec*
difieren en la forma en que se pasan los argumentos de la línea de comandos. Las variantes «l» son quizás las más fáciles de usar si el número de parámetros es fijo cuando se escribe el código; los parámetros individuales simplemente se convierten en parámetros adicionales para las funcionesexecl*()
. Las variantes «v» son buenas cuando el número de parámetros es variable, y los argumentos se pasan en una lista o tupla como el parámetro args. En cualquier caso, los argumentos del proceso secundario deben comenzar con el nombre del comando que se está ejecutando, pero esto no se aplica.Las variantes que incluyen una «p» cerca del final (
execlp()
,execlpe()
,execvp()
yexecvpe()
) utilizarán la variable de entornoPATH
para localizar el programa file. Cuando se reemplaza el entorno (utilizando una de las variantesexec*e
, que se analizan en el párrafo siguiente), el nuevo entorno se utiliza como fuente de la variablePATH
. Las otras variantes,execl()
,execle()
,execv()
yexecve()
, no utilizarán la variablePATH
para localizar el ejecutable; path debe contener una ruta absoluta o relativa adecuada. Las rutas relativas deben incluir al menos una barra, incluso en Windows, ya que los nombres simples no se resolverán.Para
execle()
,execlpe()
,execve()
yexecvpe()
(tenga en cuenta que todo esto termina en «e»), el parámetro env debe ser un mapeo que se utiliza para definir las variables de entorno para el nuevo proceso (se utilizan en lugar del entorno del proceso actual); las funcionesexecl()
,execlp()
,execv()
yexecvp()
hacen que el nuevo proceso herede el entorno del proceso actual.Para
execve()
en algunas plataformas, path también puede especificarse como un descriptor de archivo abierto. Es posible que esta funcionalidad no sea compatible con su plataforma; puede verificar si está disponible o no usandoos.supports_fd
. Si no está disponible, su uso lanzará unNotImplementedError
.Lanza un evento de auditoría
os.exec
con argumentosruta
,args
,env
.Availability: Unix, Windows, not WASI, not Android, not iOS.
Distinto en la versión 3.3: Se agregó soporte para especificar path como un descriptor de archivo abierto para
execve()
.Distinto en la versión 3.6: Acepta un objeto tipo ruta.
- os._exit(n)¶
Salga del proceso con el estado n, sin llamar a los controladores de limpieza, vaciar los buffers stdio, etc.
Nota
La forma estándar de salir es
sys.exit(n)
. Normalmente,_exit()
solo se debe utilizar en el proceso secundario después defork()
.
Los siguientes códigos de salida están definidos y se pueden usar con _exit()
, aunque no son obligatorios. Por lo general, se usan para programas del sistema escritos en Python, como el programa de entrega de comandos externos de un servidor de correo.
Nota
Es posible que algunos de estos no estén disponibles en todas las plataformas Unix, ya que hay alguna variación. Estas constantes se definen donde están definidas por la plataforma subyacente.
- os.EX_OK¶
Código de salida que significa que no ocurrió ningún error. Puede tomarse del valor definido de
EXIT_SUCCESS
en algunas plataformas. Generalmente tiene un valor de cero.Availability: Unix, Windows.
- os.EX_USAGE¶
Código de salida que significa que el comando se usó incorrectamente, como cuando se da un número incorrecto de argumentos.
Availability: Unix, not WASI.
- os.EX_DATAERR¶
Código de salida que significa que los datos de entrada eran incorrectos.
Availability: Unix, not WASI.
- os.EX_NOINPUT¶
Código de salida que significa que no existía un archivo de entrada o que no era legible.
Availability: Unix, not WASI.
- os.EX_NOUSER¶
Código de salida que significa que un usuario especificado no existía.
Availability: Unix, not WASI.
- os.EX_NOHOST¶
Código de salida que significa que no existía un host especificado.
Availability: Unix, not WASI.
- os.EX_UNAVAILABLE¶
Código de salida que significa que un servicio requerido no está disponible.
Availability: Unix, not WASI.
- os.EX_SOFTWARE¶
Código de salida que significa que se detectó un error interno de software.
Availability: Unix, not WASI.
- os.EX_OSERR¶
Código de salida que significa que se detectó un error del sistema operativo, como la imposibilidad de bifurcar o crear una tubería.
Availability: Unix, not WASI.
- os.EX_OSFILE¶
Código de salida que significa que algunos archivos del sistema no existían, no podían abrirse o tenían algún otro tipo de error.
Availability: Unix, not WASI.
- os.EX_CANTCREAT¶
Código de salida que significa que no se pudo crear un archivo de salida especificado por el usuario.
Availability: Unix, not WASI.
- os.EX_IOERR¶
Código de salida que significa que se produjo un error al realizar E / S en algún archivo.
Availability: Unix, not WASI.
- os.EX_TEMPFAIL¶
Código de salida que significa que ocurrió una falla temporal. Esto indica algo que puede no ser realmente un error, como una conexión de red que no se pudo realizar durante una operación recuperable.
Availability: Unix, not WASI.
- os.EX_PROTOCOL¶
Código de salida que significa que un intercambio de protocolo fue ilegal, inválido o no se entendió.
Availability: Unix, not WASI.
- os.EX_NOPERM¶
Código de salida que significa que no había permisos suficientes para realizar la operación (pero no para problemas del sistema de archivos).
Availability: Unix, not WASI.
- os.EX_CONFIG¶
Código de salida que significa que se produjo algún tipo de error de configuración.
Availability: Unix, not WASI.
- os.EX_NOTFOUND¶
Código de salida que significa algo así como «no se encontró una entrada».
Availability: Unix, not WASI.
- os.fork()¶
Bifurcar un proceso hijo. Retorna
0
en el niño y la identificación del proceso del niño en el padre. Si se produce un error se generaOSError
.Tenga en cuenta que algunas plataformas que incluyen FreeBSD <= 6.3 y Cygwin tienen problemas conocidos al usar
fork()
desde un hilo.Lanza un evento de auditoría
os.fork
sin argumentos.Advertencia
Si utiliza sockets TLS en una aplicación que llama a
fork()
, consulte la advertencia en la documentación dessl
.Advertencia
En macOS, el uso de esta función no es seguro cuando se combina con el uso de API de sistema de nivel superior, incluido el uso de
urllib.request
.Distinto en la versión 3.8: Llamar a
fork()
en un subinterpretador ya no es compatible (RuntimeError
está activado).Distinto en la versión 3.12: Si Python puede detectar que su proceso tiene varios subprocesos,
os.fork()
ahora genera unDeprecationWarning
.Elegimos mostrar esto como una advertencia, cuando sea detectable, para informar mejor a los desarrolladores sobre un problema de diseño que la plataforma POSIX señala específicamente como no compatible. Incluso en el código en el que appears funciona, nunca ha sido seguro mezclar subprocesos con
os.fork()
en plataformas POSIX. El entorno de ejecución de CPython en sí siempre ha realizado llamadas a la API que no son seguras para su uso en el proceso secundario cuando existían subprocesos en el primario (comomalloc
yfree
).Los usuarios de macOS o los usuarios de implementaciones de libc o malloc distintas de las que se encuentran habitualmente en glibc hasta la fecha se encuentran entre los que tienen más probabilidades de experimentar bloqueos al ejecutar dicho código.
Consulte this discussion on fork being incompatible with threads para obtener detalles técnicos sobre el motivo por el cual estamos informando a los desarrolladores de este problema de compatibilidad de plataformas de larga data.
Availability: POSIX, not WASI, not Android, not iOS.
- os.forkpty()¶
Bifurca un proceso hijo, usando un nuevo pseudo-terminal como terminal de control del niño. Retorna un par de
(pid, fd)
, donde pid es0
en el elemento secundario, la identificación del proceso del elemento secundario nuevo en el elemento primario y fd es el descriptor de archivo del final maestro de El pseudo-terminal. Para un enfoque más portátil, use el módulopty
. Si se produce un error se generaOSError
.Lanza un evento de auditoría
os.forkpty
sin argumentos.Advertencia
En macOS, el uso de esta función no es seguro cuando se combina con el uso de API de sistema de nivel superior, incluido el uso de
urllib.request
.Distinto en la versión 3.8: Llamar a
forkpty()
en un subinterpretador ya no es compatible (RuntimeError
está activado).Distinto en la versión 3.12: Si Python puede detectar que su proceso tiene varios subprocesos, esto ahora genera un error
DeprecationWarning
. Consulte la explicación más extensa sobreos.fork()
.Availability: Unix, not WASI, not Android, not iOS.
- os.kill(pid, sig, /)¶
Enviar señal sig al proceso pid. Las constantes para las señales específicas disponibles en la plataforma host se definen en el módulo
signal
.Windows: The
signal.CTRL_C_EVENT
andsignal.CTRL_BREAK_EVENT
signals are special signals which can only be sent to console processes which share a common console window, e.g., some subprocesses. Any other value for sig will cause the process to be unconditionally killed by the TerminateProcess API, and the exit code will be set to sig.Ver también
signal.pthread_kill()
.Lanza un evento de auditoría
os.kill
con argumentospid
,sig
.Availability: Unix, Windows, not WASI, not iOS.
Distinto en la versión 3.2: Se agregó soporte para Windows.
- os.killpg(pgid, sig, /)¶
Envíe la señal sig al grupo de procesos pgid.
Lanza un evento de auditoría
os.killpg
con argumentospgid
,sig
.Availability: Unix, not WASI, not iOS.
- os.nice(increment, /)¶
Agregue increment a la «simpatía» del proceso. Retorna la nueva amabilidad.
Availability: Unix, not WASI.
- os.pidfd_open(pid, flags=0)¶
Devuelve un descriptor de archivo que hace referencia al proceso pid con flags configurado. Este descriptor se puede utilizar para realizar la gestión de procesos sin carreras ni señales.
Ver la página manual de pidfd_open(2) para mas detalles.
Availability: Linux >= 5.3, Android >=
build-time
API level 31Added in version 3.9.
- os.PIDFD_NONBLOCK¶
Esta bandera indica que el descriptor de archivo no será bloqueante. Si el proceso al que hace referencia el descriptor de archivo aún no ha finalizado, entonces un intento de esperar en el descriptor de archivo utilizando waitid(2) devolverá inmediatamente el error
EAGAIN
en lugar de bloquearse.
Availability: Linux >= 5.10
Added in version 3.12.
- os.plock(op, /)¶
Bloquee segmentos del programa en la memoria. El valor de op (definido en
<sys/lock.h>
) determina qué segmentos están bloqueados.Availability: Unix, not WASI, not iOS.
- os.popen(cmd, mode='r', buffering=-1)¶
Abre una tubería hacia o desde el comando cmd. El valor retornado es un objeto de archivo abierto conectado a la canalización, que se puede leer o escribir dependiendo de si mode es
'r'
(predeterminado) o'w'
. El argumento buffering tiene el mismo significado que el argumento correspondiente a la función integradaopen()
. El objeto de archivo retornado lee o escribe cadenas de texto en lugar de bytes.El método
close
retornaNone
si el subproceso salió correctamente, o el código de retorno del subproceso si hubo un error. En los sistemas POSIX, si el código de retorno es positivo, representa el valor de retorno del proceso desplazado a la izquierda en un byte. Si el código de retorno es negativo, el proceso fue terminado por la señal dada por el valor negado del código de retorno. (Por ejemplo, el valor de retorno podría ser- signal.SIGKILL
si se eliminó el subproceso). En los sistemas Windows, el valor de retorno contiene el código de retorno entero firmado del proceso secundario.En Unix,
waitstatus_to_exitcode()
puede ser usado para convertir el resultado del métodoclose
(estado de salida) en un código de salida si es que no esNone
. En Windows, el resultado del métodoclose
es directamente el código de salida (oNone
).Esto se implementa usando
subprocess.Popen
; consulte la documentación de esa clase para obtener formas más potentes de administrar y comunicarse con subprocesos.Availability: not WASI, not Android, not iOS.
Nota
El Python UTF-8 Mode afecta las codificaciones utilizadas para cmd y el contenido de la canalización.
popen()
es un contenedor simple alrededor desubprocess.Popen
. Usesubprocess.Popen
osubprocess.run()
para controlar opciones como codificaciones.Obsoleto desde la versión 3.14: The function is soft deprecated and should no longer be used to write new code. The
subprocess
module is recommended instead.
- os.posix_spawn(path, argv, env, *, file_actions=None, setpgroup=None, resetids=False, setsid=False, setsigmask=(), setsigdef=(), scheduler=None)¶
Envuelve la API de la biblioteca C
posix_spawn()
para su uso desde Python.La mayoría de los usuarios deberían usar
subprocess.run()
en lugar deposix_spawn()
.Los argumentos posicionales path, args y env son similares a
execve()
. Se permite que env seaNone
, en cuyo caso se utiliza el entorno del proceso actual.El parámetro path es la ruta al archivo ejecutable. La path debe contener un directorio. Utilice
posix_spawnp()
para pasar un archivo ejecutable sin directorio.El argumento file_actions puede ser una secuencia de tuplas que describen acciones para tomar descriptores de archivo específicos en el proceso secundario entre los pasos de implementación de la biblioteca C
fork()
yexec()
. El primer elemento de cada tupla debe ser uno de los tres indicadores de tipo que se enumeran a continuación y que describen los elementos de tupla restantes:- os.POSIX_SPAWN_OPEN¶
(
os.POSIX_SPAWN_OPEN
, fd, path, flags, mode)Realiza
os.dup2(os.open(path, flags, mode), fd)
.
- os.POSIX_SPAWN_CLOSE¶
(
os.POSIX_SPAWN_CLOSE
, fd)Realiza
os.close(fd)
.
- os.POSIX_SPAWN_DUP2¶
(
os.POSIX_SPAWN_DUP2
, fd, new_fd)Realiza
os.dup2(fd, new_fd)
.
- os.POSIX_SPAWN_CLOSEFROM¶
(
os.POSIX_SPAWN_CLOSEFROM
, fd)Ejecuta
os.closerange(fd, INF)
.
Estas tuplas corresponden a las llamadas API de la biblioteca C
posix_spawn_file_actions_addopen()
,posix_spawn_file_actions_addclose()
,posix_spawn_file_actions_adddup2()
yposix_spawn_file_actions_addclosefrom_np()
utilizadas para preparar la propia llamadaposix_spawn()
.El argumento setpgroup establecerá el grupo de procesos del hijo en el valor especificado. Si el valor especificado es 0, el ID del grupo de procesos del hijo será el mismo que el ID de su proceso. Si el valor de setpgroup no está establecido, el hijo heredará el ID del grupo de procesos del padre. Este argumento corresponde al indicador
POSIX_SPAWN_SETPGROUP
de la biblioteca C.Si el argumento resetids es
True
, restablecerá el UID y GID efectivos del hijo al UID y GID reales del proceso padre. Si el argumento esFalse
, el hijo conserva el UID y GID efectivos del padre. En cualquier caso, si los bits de permiso set-user-ID y set-group-ID están habilitados en el archivo ejecutable, su efecto anulará la configuración del UID y GID efectivos. Este argumento corresponde al indicadorPOSIX_SPAWN_RESETIDS
de la biblioteca C.Si el argumento setsid es
True
, se creará un nuevo ID de sesión paraposix_spawn
. setsid requiere el indicadorPOSIX_SPAWN_SETSID
oPOSIX_SPAWN_SETSID_NP
. De lo contrario, se activaNotImplementedError
.El argumento setsigmask establecerá la máscara de señal en el conjunto de señales especificado. Si no se utiliza el parámetro, el elemento secundario hereda la máscara de señal del elemento principal. Este argumento corresponde al indicador
POSIX_SPAWN_SETSIGMASK
de la biblioteca C.El argumento sigdef restablecerá la disposición de todas las señales en el conjunto especificado. Este argumento corresponde al indicador
POSIX_SPAWN_SETSIGDEF
de la biblioteca C.El argumento scheduler debe ser una tupla que contenga la política del programador (opcional) y una instancia de
sched_param
con los parámetros del programador. Un valor deNone
en lugar de la política del programador indica que no se proporciona. Este argumento es una combinación de los indicadoresPOSIX_SPAWN_SETSCHEDPARAM
yPOSIX_SPAWN_SETSCHEDULER
de la biblioteca C.Lanza un evento de auditoría
os.posix_spawn
con argumentosruta
,argv
,env
.Added in version 3.8.
Distinto en la versión 3.13: El parámetro env acepta
None
.os.POSIX_SPAWN_CLOSEFROM
está disponible en plataformas donde existeposix_spawn_file_actions_addclosefrom_np()
.Availability: Unix, not WASI, not Android, not iOS.
- os.posix_spawnp(path, argv, env, *, file_actions=None, setpgroup=None, resetids=False, setsid=False, setsigmask=(), setsigdef=(), scheduler=None)¶
Envuelve la API de la biblioteca C
posix_spawnp()
para su uso desde Python.Similar a
posix_spawn()
excepto que el sistema busca el archivo executable en la lista de directorios especificada por la variable de entornoPATH
(de la misma manera que paraexecvp(3)
)Lanza un evento de auditoría
os.posix_spawn
con argumentosruta
,argv
,env
.Added in version 3.8.
Availability: POSIX, not WASI, not Android, not iOS.
Consulte la documentación de
posix_spawn()
.
- os.register_at_fork(*, before=None, after_in_parent=None, after_in_child=None)¶
Registra los invocables que se ejecutarán cuando se bifurca un nuevo proceso secundario utilizando
os.fork()
o API de clonación de procesos similares. Los parámetros son opcionales y solo de palabras clave. Cada uno especifica un punto de llamada diferente.before es una función llamada antes de bifurcar un proceso hijo.
after_in_parent es una función llamada desde el proceso padre después de bifurcar un proceso hijo.
after_in_child es una función llamada desde el proceso hijo.
Estas llamadas solo se realizan si se espera que el control regrese al intérprete de Python. Un lanzamiento típico
subprocess
no los activará ya que el niño no va a volver a ingresar al intérprete.Las funciones registradas para su ejecución antes de la bifurcación se invocan en orden de registro inverso. Las funciones registradas para la ejecución después de la bifurcación (ya sea en el padre o en el hijo) se invocan en orden de registro.
Tenga en cuenta que las llamadas
fork()
realizadas por código C de terceros no pueden llamar a esas funciones, a menos que explícitamente llame aPyOS_BeforeFork()
,PyOS_AfterFork_Parent()
yPyOS_AfterFork_Child()
.No hay forma de cancelar el registro de una función.
Availability: Unix, not WASI, not Android, not iOS.
Added in version 3.7.
- os.spawnl(mode, path, ...)¶
- os.spawnle(mode, path, ..., env)¶
- os.spawnlp(mode, file, ...)¶
- os.spawnlpe(mode, file, ..., env)¶
- os.spawnv(mode, path, args)¶
- os.spawnve(mode, path, args, env)¶
- os.spawnvp(mode, file, args)¶
- os.spawnvpe(mode, file, args, env)¶
Ejecute el programa path en un nuevo proceso.
(Tenga en cuenta que el módulo
subprocess
proporciona funciones más potentes para generar nuevos procesos y recuperar sus resultados; es preferible usar ese módulo que usar estas funciones. Compruebe especialmente la sección Cómo reemplazar anteriores funciones con el módulo subprocess.)Si mode es
P_NOWAIT
, esta función retorna la identificación del proceso del nuevo proceso; if mode isP_WAIT
, retorna el código de salida del proceso si sale normalmente, o-signal
, donde signal es la señal que mató el proceso. En Windows, la identificación del proceso en realidad será el identificador del proceso, por lo que se puede usar con la funciónwaitpid()
.Nota sobre VxWorks, esta función no retorna
-signal
cuando se cierra el nuevo proceso. En su lugar, genera una excepción OSError.Las variantes «l» y «v» de las funciones
spawn*
difieren en la forma en que se pasan los argumentos de la línea de comandos. Las variantes «l» son quizás las más fáciles de usar si el número de parámetros es fijo cuando se escribe el código; los parámetros individuales simplemente se convierten en parámetros adicionales para las funcionesspawnl*()
. Las variantes «v» son buenas cuando el número de parámetros es variable, y los argumentos se pasan en una lista o tupla como el parámetro args. En cualquier caso, los argumentos del proceso hijo deben comenzar con el nombre del comando que se está ejecutando.Las variantes que incluyen una segunda «p» cerca del final (
spawnlp()
,spawnlpe()
,spawnvp()
, yspawnvpe()
) usaránPATH
variable de entorno para ubicar el programa file. Cuando se reemplaza el entorno (usando uno de los siguientesspawn*e
variantes, discutidas en el siguiente párrafo), el nuevo entorno se utiliza como fuente de la variablePATH
. Las otras variantes,spawnl()
,spawnle()
,spawnv()
, yspawnve()
, no utilizarán la variablePATH
para localizar el ejecutable; path debe contener una ruta absoluta o relativa apropiada.Para
spawnle()
,spawnlpe()
,spawnve()
, yspawnvpe()
(tenga en cuenta que todo esto termina en «e»), el parámetro env debe ser un mapeo que se utiliza para definir las variables de entorno para el nuevo proceso (se utilizan en lugar del entorno del proceso actual); las funcionesspawnl()
,spawnlp()
,spawnv()
yspawnvp()
hacen que el nuevo proceso herede el entorno del proceso actual. Tenga en cuenta que las claves y los valores en el diccionario env deben ser cadenas; Las teclas o valores no válidos harán que la función falle, con un valor de retorno de127
.Como ejemplo, las siguientes llamadas a
spawnlp()
yspawnvpe()
son equivalentes:import os os.spawnlp(os.P_WAIT, 'cp', 'cp', 'index.html', '/dev/null') L = ['cp', 'index.html', '/dev/null'] os.spawnvpe(os.P_WAIT, 'cp', L, os.environ)
Lanza un evento de auditoría
os.spawn
con argumentosmode
,path
,args
,env
.Availability: Unix, Windows, not WASI, not Android, not iOS.
spawnlp()
,spawnlpe()
,spawnvp()
yspawnvpe()
no están disponibles en Windows.spawnle()
yspawnve()
no son seguros para subprocesos en Windows; le recomendamos que utilice el módulosubprocess
en su lugar.Distinto en la versión 3.6: Acepta un objeto tipo ruta.
Obsoleto desde la versión 3.14: These functions are soft deprecated and should no longer be used to write new code. The
subprocess
module is recommended instead.
- os.P_NOWAIT¶
- os.P_NOWAITO¶
Valores posibles para el parámetro mode de la familia de funciones
spawn*
. Si se proporciona cualquiera de estos valores, las funcionesspawn*
retornarán tan pronto como se haya creado el nuevo proceso, con el identificador del proceso como valor de retorno.Availability: Unix, Windows.
- os.P_WAIT¶
Valor posible para el parámetro mode de la familia de funciones
spawn*
. Si se proporciona como mode, las funcionesspawn*
no regresarán hasta que el nuevo proceso se haya ejecutado por completo y devolverán el código de salida del proceso cuya ejecución se realizó correctamente, o-signal
si una señal finaliza el proceso.Availability: Unix, Windows.
- os.P_DETACH¶
- os.P_OVERLAY¶
Valores posibles para el parámetro mode para
spawn*
familia de funciones. Estos son menos portátiles que los enumerados anteriormente.P_DETACH
es similar aP_NOWAIT
, pero el nuevo proceso se desconecta de la consola del proceso de llamada. Si se usaP_OVERLAY
, el proceso actual será reemplazado; la funciónspawn*
no volverá.Availability: Windows.
- os.startfile(path[, operation][, arguments][, cwd][, show_cmd])¶
Inicie un archivo con su aplicación asociada.
Cuando no se especifica operation, esto actúa como hacer doble clic en el archivo en el Explorador de Windows o dar el nombre del archivo como argumento al comando start desde el shell de comandos interactivo: el archivo se abre con cualquier aplicación (si hay alguna) con la que esté asociada su extensión.
Cuando se proporciona otro operation, debe ser un «verbo de comando» que especifique qué se debe hacer con el archivo. Los verbos comunes documentados por Microsoft son
'open'
,'print'
y'edit'
(para usar en archivos), así como'explore'
y'find'
(para usar en directorios).Al iniciar una aplicación, especifique arguments para que se pase como una sola cadena. Es posible que este argumento no tenga ningún efecto cuando se utiliza esta función para iniciar un documento.
El directorio de trabajo predeterminado se hereda, pero el argumento cwd puede anularlo. Este debería ser un camino absoluto. Un path relativo se resolverá contra este argumento.
Utilice show_cmd para anular el estilo de ventana predeterminado. El efecto que esto tenga dependerá de la aplicación que se esté ejecutando. Los valores son números enteros, tal como lo admite la función
ShellExecute()
de Win32.startfile()
retorna tan pronto como se inicia la aplicación asociada. No hay opción para esperar a que se cierre la aplicación y no hay forma de recuperar el estado de salida de la aplicación. El parámetro path es relativo al directorio actual o cwd. Si desea utilizar una ruta absoluta, asegúrese de que el primer carácter no sea una barra ('/'
) Utilicepathlib
o la funciónos.path.normpath()
para asegurarse de que las rutas estén codificadas correctamente para Win32.Para reducir la sobrecarga de inicio del intérprete, la función Win32
ShellExecute()
no se resuelve hasta que se la llama por primera vez. Si no se puede resolver la función, se generaráNotImplementedError
.Lanza un evento de auditoría
os.startfile
con argumentospath
,operation
.Lanza un evento de auditoria
os.startfile/2
con argumentospath
,operation
,arguments
,cwd
,show_cmd
.Availability: Windows.
Distinto en la versión 3.10: Se agregaron los argumentos arguments, cwd y show_cmd, y el evento de auditoría
os.startfile/2
.
- os.system(command)¶
Ejecute el comando (una cadena) en una subcapa. Esto se implementa llamando a la función C estándar
system()
y tiene las mismas limitaciones. Los cambios ensys.stdin
, etc. no se reflejan en el entorno del comando ejecutado. Si command genera alguna salida, se enviará al flujo de salida estándar del intérprete. El estándar C no especifica el significado del valor de retorno de la función C, por lo que el valor de retorno de la función de Python depende del sistema.En Unix, el valor de retorno es el estado de salida del proceso codificado en el formato especificado para
wait()
.En Windows, el valor de retorno es el que retorna el shell del sistema después de ejecutar command. El shell viene dado por la variable de entorno de Windows
COMSPEC
: generalmente es cmd.exe, que retorna el estado de salida de la ejecución del comando; En sistemas que utilizan un shell no nativo, consulte la documentación del shell.The
subprocess
module provides more powerful facilities for spawning new processes and retrieving their results; using that module is recommended to using this function. See the Cómo reemplazar anteriores funciones con el módulo subprocess section in thesubprocess
documentation for some helpful recipes.En Unix,
waitstatus_to_exitcode()
puede ser usado para convertir el resultado (estado de salida) en un código de salida. En Windows, el resultado es directamente el código de salida.Lanza un evento de auditoría
os.system
con argumentocommand
.Availability: Unix, Windows, not WASI, not Android, not iOS.
- os.times()¶
Retorna los tiempos de proceso globales actuales. El valor de retorno es un objeto con cinco atributos:
user
- tiempo de usuariosystem
- tiempo de sistemachildren_user
- tiempo de usuario de todos los procesos secundarioschildren_system
- hora del sistema de todos los procesos secundarioselapsed
: tiempo real transcurrido desde un punto fijo en el pasado
Por compatibilidad con versiones anteriores, este objeto también se comporta como una tupla de cinco que contiene
user
,system
,children_user
,children_system
yelapsed
en ese orden.Consulte las páginas del manual de Unix times(2) y times(3) en Unix o the GetProcessTimes MSDN en Windows. En Windows, solo se conocen
user
ysystem
; los demás atributos son cero.Availability: Unix, Windows.
Distinto en la versión 3.3: El tipo de objeto retornado cambió de una tupla a un objeto tipo tupla con atributos con nombre.
- os.wait()¶
Espere a que se complete un proceso secundario y retorna una tupla que contenga su indicación de estado pid y de salida: un número de 16 bits, cuyo byte bajo es el número de señal que mató el proceso y cuyo byte alto es el estado de salida (si la señal el número es cero); el bit alto del byte bajo se establece si se produjo un archivo central.
Si no hay niños a los que esperar, se genera
ChildProcessError
.waitstatus_to_exitcode()
puede ser usado para convertir el estado de salida en el código de salida.Availability: Unix, not WASI, not Android, not iOS.
Ver también
Las demás funciones
wait*()
documentadas a continuación se pueden utilizar para esperar a que se complete un proceso secundario específico y tener más opciones.waitpid()
es la única que también está disponible en Windows.
- os.waitid(idtype, id, options, /)¶
Esperar a que se complete un proceso secundario.
idtype puede ser
P_PID
,P_PGID
,P_ALL
o (en Linux)P_PIDFD
. La interpretación de id depende de ello; consulte sus descripciones individuales.options es una combinación OR de indicadores. Se requiere al menos uno de
WEXITED
,WSTOPPED
oWCONTINUED
;WNOHANG
yWNOWAIT
son indicadores opcionales adicionales.El valor de retorno es un objeto que representa los datos contenidos en la estructura
siginfo_t
con los siguientes atributos:si_pid
(identificación del proceso)si_uid
(ID de usuario real del niño)si_signo
(siempreSIGCHLD
)si_status
(el estado de salida o el número de señal, segúnsi_code
)si_code
(consulteCLD_EXITED
para conocer los posibles valores)
Si se especifica
WNOHANG
y no hay elementos secundarios coincidentes en el estado solicitado, se devuelveNone
. De lo contrario, si no hay elementos secundarios coincidentes que se puedan esperar, se generaChildProcessError
.Availability: Unix, not WASI, not Android, not iOS.
Added in version 3.3.
Distinto en la versión 3.13: Esta función ahora también está disponible en macOS.
- os.waitpid(pid, options, /)¶
Los detalles de esta función difieren en Unix y Windows.
En Unix: espere a que se complete un proceso secundario dado por la identificación del proceso pid, y retorna una tupla que contenga su identificación del proceso y la indicación del estado de salida (codificado como para
wait()
). La semántica de la llamada se ve afectada por el valor del número entero options, que debe ser0
para el funcionamiento normal.Si pid es mayor que
0
,waitpid()
solicita información de estado para ese proceso específico. Si pid es0
, la solicitud es para el estado de cualquier hijo en el grupo de procesos del proceso actual. Si pid es-1
, la solicitud corresponde a cualquier elemento secundario del proceso actual. Si pid es menor que-1
, se solicita el estado de cualquier proceso en el grupo de procesos-pid
(el valor absoluto de pid).options es una combinación OR de indicadores. Si contiene
WNOHANG
y no hay hijos coincidentes en el estado solicitado, se devuelve(0, 0)
. De lo contrario, si no hay hijos coincidentes que se puedan esperar, se generaChildProcessError
. Otras opciones que se pueden utilizar sonWUNTRACED
yWCONTINUED
.En Windows: espere a que se complete un proceso dado por el identificador de proceso pid, y retorna una tupla que contiene pid, y su estado de salida se desplazó a la izquierda en 8 bits (el desplazamiento facilita el uso de la función en la plataforma). A pid menor o igual que
0
no tiene un significado especial en Windows y genera una excepción. El valor de entero options no tiene ningún efecto. pid puede referirse a cualquier proceso cuya identificación sea conocida, no necesariamente un proceso hijo. Las funcionesspawn*
llamadas conP_NOWAIT
retornan manejadores de proceso adecuados.waitstatus_to_exitcode()
puede ser usado para convertir el estado de salida en el código de salida.Availability: Unix, Windows, not WASI, not Android, not iOS.
Distinto en la versión 3.5: Si la llamada al sistema se interrumpe y el controlador de señal no genera una excepción, la función vuelve a intentar la llamada del sistema en lugar de generar una excepción
InterruptedError
(ver PEP 475 para la justificación).
- os.wait3(options)¶
Similar a
waitpid()
, excepto que no se proporciona ningún argumento de identificación de proceso y se devuelve una tupla de 3 elementos que contiene la identificación del proceso del hijo, la indicación del estado de salida y la información de uso de recursos. Consulteresource.getrusage()
para obtener detalles sobre la información de uso de recursos. El argumento options es el mismo que se proporciona awaitpid()
ywait4()
.waitstatus_to_exitcode()
puede ser usado para convertir el estado de salida al código de salida.Availability: Unix, not WASI, not Android, not iOS.
- os.wait4(pid, options)¶
Similar a
waitpid()
, excepto que se devuelve una tupla de 3 elementos que contiene el identificador del proceso secundario, la indicación del estado de salida y la información de uso de recursos. Consulteresource.getrusage()
para obtener detalles sobre la información de uso de recursos. Los argumentos dewait4()
son los mismos que los proporcionados awaitpid()
.waitstatus_to_exitcode()
puede ser usado para convertir el estado de salida al código de salida.Availability: Unix, not WASI, not Android, not iOS.
- os.P_PID¶
- os.P_PGID¶
- os.P_ALL¶
- os.P_PIDFD¶
Estos son los valores posibles para idtype en
waitid()
. Afectan a la interpretación de id:P_PID
: espera al niño cuyo PID es id.P_PGID
: espera a cualquier niño cuyo ID de grupo de progreso sea id.P_ALL
- espera a cualquier hijo; id se ignora.P_PIDFD
: espera al niño identificado por el descriptor de archivo id (un descriptor de archivo de proceso creado conpidfd_open()
).
Availability: Unix, not WASI, not Android, not iOS.
Nota
P_PIDFD
solo está disponible en Linux >= 5.4.Added in version 3.3.
Added in version 3.9: La constante
P_PIDFD
.
- os.WCONTINUED¶
Esta bandera options para
waitpid()
,wait3()
,wait4()
ywaitid()
hace que se informe sobre los procesos secundarios si han continuado desde una detención del control de trabajo desde que se informaron por última vez.Availability: Unix, not WASI, not Android, not iOS.
- os.WEXITED¶
Esta bandera options para
waitid()
hace que se informen los procesos secundarios que han finalizado.Las demás funciones
wait*
siempre informan sobre los hijos que han finalizado, por lo que esta opción no está disponible para ellos.Availability: Unix, not WASI, not Android, not iOS.
Added in version 3.3.
- os.WSTOPPED¶
Esta bandera options para
waitid()
hace que se informen los procesos secundarios que se han detenido por la entrega de una señal.Esta opción no está disponible para las demás funciones
wait*
.Availability: Unix, not WASI, not Android, not iOS.
Added in version 3.3.
- os.WUNTRACED¶
Esta bandera options para
waitpid()
,wait3()
ywait4()
hace que también se informe sobre los procesos secundarios si se han detenido pero no se ha informado sobre su estado actual desde que se detuvieron.Esta opción no está disponible para
waitid()
.Availability: Unix, not WASI, not Android, not iOS.
- os.WNOHANG¶
Esta bandera options hace que
waitpid()
,wait3()
,wait4()
ywaitid()
regresen inmediatamente si no hay ningún estado de proceso secundario disponible inmediatamente.Availability: Unix, not WASI, not Android, not iOS.
- os.WNOWAIT¶
Esta bandera options hace que
waitid()
deje al niño en un estado de espera, de modo que se pueda usar una llamadawait*()
posterior para recuperar nuevamente la información del estado del niño.Esta opción no está disponible para las demás funciones
wait*
.Availability: Unix, not WASI, not Android, not iOS.
- os.CLD_EXITED¶
- os.CLD_KILLED¶
- os.CLD_DUMPED¶
- os.CLD_TRAPPED¶
- os.CLD_STOPPED¶
- os.CLD_CONTINUED¶
Estos son los valores posibles para
si_code
en el resultado devuelto porwaitid()
.Availability: Unix, not WASI, not Android, not iOS.
Added in version 3.3.
Distinto en la versión 3.9: Agregado los valores
CLD_KILLED
yCLD_STOPPED
.
- os.waitstatus_to_exitcode(status)¶
Convertir un estado de espera a un código de salida.
En Unix:
Si el proceso termino con normalidad (if
WIFEXITED(status)
is true, se retornan el estado de salida del proceso (returnWEXITSTATUS(status)
): resultado mayor o igual a 0.Si el proceso fue terminado por una señal (if
WIFSIGNALED(status)
is true), retorna-signum
donde signum es el numero de la señal que cause que el proceso termine (return-WTERMSIG(status)
): resultado menor que 0.En el caso contrario, se lanza un
ValueError
.
En Windows, retorna status desplazado a la derecha en 8 bits.
En Unix, si el proceso esta siendo rastreado o si
waitpid()
fue llamado con la opciónWUNTRACED
, el que llama debe revisar primero siWIFSTOPPED(status)
es verdadero. La función no debe de ser llamada siWIFSTOPPED(status)
es verdadero.Ver también
Funciones
WIFEXITED()
,WEXITSTATUS()
,WIFSIGNALED()
,WTERMSIG()
,WIFSTOPPED()
,WSTOPSIG()
.Availability: Unix, Windows, not WASI, not Android, not iOS.
Added in version 3.9.
Las siguientes funciones toman un código de estado del proceso retornado por system()
, wait()
, o waitpid()
como parámetro. Pueden usarse para determinar la disposición de un proceso.
- os.WCOREDUMP(status, /)¶
Retorna
True
si se generó un volcado de núcleo para el proceso; de lo contrario, retornaFalse
.Esta función debe emplearse solo si
WIFSIGNALED()
es verdadero.Availability: Unix, not WASI, not Android, not iOS.
- os.WIFCONTINUED(status)¶
Devuelve
True
si un hijo detenido se ha reanudado mediante la entrega deSIGCONT
(si el proceso ha continuado desde una detención del control de trabajo); de lo contrario, devuelveFalse
.Ver opción
WCONTINUED
.Availability: Unix, not WASI, not Android, not iOS.
- os.WIFSTOPPED(status)¶
Retorna
True
si el proceso se detuvo mediante la entrega de una señal; de lo contrario, retornaFalse
.WIFSTOPPED()
solo retornaTrue
si la llamadawaitpid()
se realizó utilizando la opciónWUNTRACED
o cuando se rastrea el proceso (consulte ptrace(2))Availability: Unix, not WASI, not Android, not iOS.
- os.WIFSIGNALED(status)¶
Retorna
True
si el proceso finalizó con una señal; de lo contrario, retornaFalse
.Availability: Unix, not WASI, not Android, not iOS.
- os.WIFEXITED(status)¶
Retorna
True
si el proceso finalizó normalmente, es decir, llamando aexit()
o_exit()
, o volviendo demain()
; de lo contrario, retornaFalse
.Availability: Unix, not WASI, not Android, not iOS.
- os.WEXITSTATUS(status)¶
Retorna el estado de salida del proceso.
Esta función debe emplearse solo si
WIFEXITED()
es verdadero.Availability: Unix, not WASI, not Android, not iOS.
- os.WSTOPSIG(status)¶
Retorna la señal que hizo que el proceso se detuviera.
Esta función debe emplearse solo si
WIFSTOPPED()
es verdadero.Availability: Unix, not WASI, not Android, not iOS.
- os.WTERMSIG(status)¶
Retorna el número de la señal que provocó la finalización del proceso.
Esta función debe emplearse solo si
WIFSIGNALED()
es verdadero.Availability: Unix, not WASI, not Android, not iOS.
Interfaz al planificador¶
Estas funciones controlan cómo el sistema operativo asigna el tiempo de CPU a un proceso. Solo están disponibles en algunas plataformas Unix. Para obtener información más detallada, consulte las páginas de manual de Unix.
Added in version 3.3.
Las siguientes políticas de programación están expuestas si son compatibles con el sistema operativo.
- os.SCHED_OTHER¶
La política de programación predeterminada.
- os.SCHED_BATCH¶
Política de programación para procesos intensivos en CPU que intenta preservar la interactividad en el resto de la computadora.
- os.SCHED_DEADLINE¶
Scheduling policy for tasks with deadline constraints.
Added in version 3.14.
- os.SCHED_IDLE¶
Política de programación para tareas en segundo plano de prioridad extremadamente baja.
- os.SCHED_NORMAL¶
Alias for
SCHED_OTHER
.Added in version 3.14.
- os.SCHED_SPORADIC¶
Política de programación para programas de servidor esporádicos.
- os.SCHED_FIFO¶
Una política de programación First In First Out.
- os.SCHED_RR¶
Una política de programación round-robin.
- os.SCHED_RESET_ON_FORK¶
Esta flag se puede OR con cualquier otra política de programación. Cuando un proceso con este indicador establece bifurcaciones, la política de programación y la prioridad de su hijo se restablecen a los valores predeterminados.
- class os.sched_param(sched_priority)¶
Esta clase representa los parámetros de programación ajustables utilizados en
sched_setparam()
,sched_setscheduler()
ysched_getparam()
. Es inmutable.Por el momento, solo hay un parámetro posible:
- sched_priority¶
La prioridad de programación para una política de programación.
- os.sched_get_priority_min(policy)¶
Obtiene el valor de prioridad mínimo para policy. policy es una de las constantes de política de programación anteriores.
- os.sched_get_priority_max(policy)¶
Obtiene el valor de prioridad máxima para policy. policy es una de las constantes de política de programación anteriores.
- os.sched_setscheduler(pid, policy, param, /)¶
Establece la política de programación para el proceso con PID pid. Un pid de 0 significa el proceso de llamada. policy es una de las constantes de política de programación anteriores. param es una instancia de
sched_param
.
- os.sched_getscheduler(pid, /)¶
Retorna la política de programación para el proceso con PID pid. Un pid de 0 significa el proceso de llamada. El resultado es una de las constantes de política de programación anteriores.
- os.sched_setparam(pid, param, /)¶
Establece los parámetros de programación para el proceso con PID pid. Un pid de 0 significa el proceso de llamada. param es una instancia de
sched_param
.
- os.sched_getparam(pid, /)¶
Retorna los parámetros de programación como una instancia de
sched_param
para el proceso con PID pid. Un pid de 0 significa el proceso de llamada.
- os.sched_rr_get_interval(pid, /)¶
Retorna el round-robin quantum en segundos para el proceso con PID pid. Un pid de 0 significa el proceso de llamada.
- os.sched_yield()¶
Voluntarily relinquish the CPU. See sched_yield(2) for details.
- os.sched_setaffinity(pid, mask, /)¶
Restringe el proceso con PID pid (o el proceso actual si es cero) a un conjunto de CPU. mask es un entero iterable que representa el conjunto de CPU a las que se debe restringir el proceso.
- os.sched_getaffinity(pid, /)¶
Devuelve el conjunto de CPU a las que está restringido el proceso con PID pid.
Si pid es cero, devuelve el conjunto de CPU a las que está restringido el hilo de llamada del proceso actual.
Véase también la función
process_cpu_count()
.
Información miscelánea del sistema¶
- os.confstr(name, /)¶
Retorna valores de configuración del sistema con valores de cadena. name especifica el valor de configuración para recuperar; puede ser una cadena que es el nombre de un valor de sistema definido; estos nombres se especifican en varios estándares (POSIX, Unix 95, Unix 98 y otros). Algunas plataformas también definen nombres adicionales. Los nombres conocidos por el sistema operativo host se dan como las claves del diccionario
confstr_names
. Para las variables de configuración no incluidas en esa asignación, también se acepta pasar un número entero para name.Si el valor de configuración especificado por name no está definido, se retorna
None
.Si name es una cadena y no se conoce, se excita
ValueError
. Si el sistema host no admite un valor específico para name, incluso si está incluido enconfstr_names
, se lanza unOSError
conerrno.EINVAL
para el número de error .Availability: Unix.
- os.confstr_names¶
Nombres de mapeo de diccionario aceptados por
confstr()
a los valores enteros definidos para esos nombres por el sistema operativo host. Esto se puede usar para determinar el conjunto de nombres conocidos por el sistema.Availability: Unix.
- os.cpu_count()¶
Devuelve la cantidad de CPU lógicas en system. Devuelve
None
si no se determina.La función
process_cpu_count()
se puede utilizar para obtener la cantidad de CPU lógicas que puede utilizar el hilo que llama a current process.Added in version 3.4.
Distinto en la versión 3.13: Si se proporciona
-X cpu_count
o se establecePYTHON_CPU_COUNT
,cpu_count()
devuelve el valor anulado n.
- os.getloadavg()¶
Retorna el número de procesos en la cola de ejecución del sistema promediada durante los últimos 1, 5 y 15 minutos o aumentos
OSError
si el promedio de carga no se pudo obtener.Availability: Unix.
- os.process_cpu_count()¶
Obtiene la cantidad de CPU lógicas que puede utilizar el subproceso que realiza la llamada a current process. Devuelve
None
si no se determina. Puede ser menor quecpu_count()
según la afinidad de la CPU.La función
cpu_count()
se puede utilizar para obtener la cantidad de CPU lógicas en system.Si se proporciona
-X cpu_count
o se establecePYTHON_CPU_COUNT
,process_cpu_count()
devuelve el valor anulado n.See also the
sched_getaffinity()
function.Added in version 3.13.
- os.sysconf(name, /)¶
Retorna valores de configuración del sistema con valores enteros. Si el valor de configuración especificado por name no está definido, se retorna
-1
. Los comentarios sobre el parámetro name paraconfstr()
se aplican aquí también; El diccionario que proporciona información sobre los nombres conocidos viene dado porsysconf_names
.Availability: Unix.
- os.sysconf_names¶
Nombres de asignación de diccionario aceptados por
sysconf()
a los valores enteros definidos para esos nombres por el sistema operativo host. Esto se puede usar para determinar el conjunto de nombres conocidos por el sistema.Availability: Unix.
Distinto en la versión 3.11: Agregue el nombre
'SC_MINSIGSTKSZ'
.
Los siguientes valores de datos se utilizan para admitir operaciones de manipulación de rutas. Estos están definidos para todas las plataformas.
Las operaciones de nivel superior en los nombres de ruta se definen en el módulo os.path
.
- os.curdir¶
La cadena constante utilizada por el sistema operativo para referirse al directorio actual. Esto es
'.'
Para Windows y POSIX. También disponible a través deos.path
.
- os.pardir¶
La cadena constante utilizada por el sistema operativo para hacer referencia al directorio principal. Esto es
'...'
para Windows y POSIX. También disponible a través deos.path
.
- os.sep¶
El carácter utilizado por el sistema operativo para separar los componentes del nombre de ruta. Esto es
'/'
para POSIX y'\\'
para Windows. Tenga en cuenta que saber esto no es suficiente para poder analizar o concatenar nombres de ruta — useos.path.split()
yos.path.join()
— pero en ocasiones es útil. También disponible a través deos.path
.
- os.altsep¶
Un carácter alternativo utilizado por el sistema operativo para separar los componentes del nombre de ruta, o
None
si solo existe un carácter separador. Esto se establece en'/'
en los sistemas Windows dondesep
es una barra invertida. También disponible a través deos.path
.
- os.extsep¶
El carácter que separa el nombre de archivo base de la extensión; por ejemplo, el
'.'
enos.py
. También disponible a través deos.path
.
- os.pathsep¶
El carácter utilizado convencionalmente por el sistema operativo para separar los componentes de la ruta de búsqueda (como en
PATH
), como':'
para POSIX o';'
para Windows. También disponible a través deos.path
.
- os.defpath¶
La ruta de búsqueda predeterminada utilizada por
exec*p*
yspawn*p*
si el entorno no tiene una tecla'RUTA'
. También disponible a través deos.path
.
- os.linesep¶
La cadena utilizada para separar (o, más bien, terminar) líneas en la plataforma actual. Este puede ser un solo carácter, como
'\n'
para POSIX, o varios caracteres, por ejemplo,'\r\n'
para Windows. No utilice os.linesep como terminador de línea cuando escriba archivos abiertos en modo texto (el valor predeterminado); use un solo'\n'
en su lugar, en todas las plataformas.
- os.devnull¶
La ruta del archivo del dispositivo nulo. Por ejemplo:
'/dev/null'
para POSIX,'nul'
para Windows. También disponible a través deos.path
.
- os.RTLD_LAZY¶
- os.RTLD_NOW¶
- os.RTLD_GLOBAL¶
- os.RTLD_LOCAL¶
- os.RTLD_NODELETE¶
- os.RTLD_NOLOAD¶
- os.RTLD_DEEPBIND¶
Flags para usar con las funciones
setdlopenflags()
ygetdlopenflags()
. Consulte la página del manual de Unix dlopen(3) para saber qué significan las diferentes flags.Added in version 3.3.
Números al azar¶
- os.getrandom(size, flags=0)¶
Obtiene hasta size bytes aleatorios. La función puede retornar menos bytes que los solicitados.
Estos bytes se pueden usar para generar generadores de números aleatorios en el espacio del usuario o para fines criptográficos.
getrandom()
se basa en la entropía obtenida de los controladores de dispositivos y otras fuentes de ruido ambiental. La lectura innecesaria de grandes cantidades de datos tendrá un impacto negativo en otros usuarios de los dispositivos/dev/random
y/dev/urandom
.El argumento de banderas es una máscara de bits que puede contener cero o más de los siguientes valores unidos mediante OR:
os.GRND_RANDOM
yGRND_NONBLOCK
.Véase también el Linux getrandom() manual page.
Availability: Linux >= 3.17.
Added in version 3.6.
- os.urandom(size, /)¶
Retorna una cadena de bytes de bytes aleatorios size adecuados para uso criptográfico.
Esta función retorna bytes aleatorios de una fuente de aleatoriedad específica del sistema operativo. Los datos retornados deben ser lo suficientemente impredecibles para las aplicaciones criptográficas, aunque su calidad exacta depende de la implementación del sistema operativo.
En Linux, si la llamada al sistema
getrandom()
está disponible, se usa en modo de bloqueo: bloquee hasta que el grupo de entropía urandom del sistema se inicialice (el núcleo recopila 128 bits de entropía). Ver el PEP 524 para la justificación. En Linux, la funcióngetrandom()
puede usarse para obtener bytes aleatorios en modo sin bloqueo (usando el indicadorGRND_NONBLOCK
) o para sondear hasta que el grupo de entropía urandom del sistema se inicialice.En un sistema tipo Unix, los bytes aleatorios se leen desde el dispositivo
/dev/urandom
. Si el dispositivo/dev/urandom
no está disponible o no es legible, se genera la excepciónNotImplementedError
.En Windows, usará
BCryptGenRandom()
.Ver también
El módulo
secrets
proporciona funciones de nivel superior. Para obtener una interfaz fácil de usar con el generador de números aleatorios proporcionado por su plataforma, consulterandom.SystemRandom
.Distinto en la versión 3.5: En Linux 3.17 y versiones posteriores, la llamada al sistema
getrandom()
ahora se usa cuando está disponible. En OpenBSD 5.6 y posterior, ahora se usa la función Cgetentropy()
. Estas funciones evitan el uso de un descriptor de archivo interno.Distinto en la versión 3.5.2: En Linux, si el syscall
getrandom()
bloquea (el grupo de entropía urandom aún no está inicializado), recurra a la lectura/dev/urandom
.Distinto en la versión 3.6: En Linux,
getrandom()
ahora se usa en modo de bloqueo para aumentar la seguridad.Distinto en la versión 3.11: En Windows, se utiliza
BCryptGenRandom()
en lugar deCryptGenRandom()
, que está en desuso.
- os.GRND_NONBLOCK¶
Por defecto, cuando lee desde
/dev/random
,getrandom()
bloquea si no hay bytes aleatorios disponibles, y cuando lee desde/dev/urandom
, bloquea si el grupo de entropía no tiene, sin embargo, se ha inicializado.Si se establece el indicador
GRND_NONBLOCK
, entoncesgetrandom()
no se bloquea en estos casos, sino que inmediatamente generaBlockingIOError
.Added in version 3.6.
- os.GRND_RANDOM¶
Si se establece este bit, los bytes aleatorios se extraen del grupo
/dev/random
en lugar del grupo/dev/urandom
.Added in version 3.6.