Directorio de artículos
módulo de sistema operativo
Este módulo proporciona varias funciones que le permiten manipular rutas de archivos y verificar información relacionada con las rutas, como la existencia, la extensión del archivo, el nombre del directorio y más.
1.1 Funciones de uso común
Algunas de las funciones comúnmente utilizadas incluyen:
-
os.path.join(*paths)
: Esta función se utiliza para conectar inteligentemente uno o más componentes de ruta . Acepta múltiples argumentos y devuelve una nueva cadena de ruta concatenada con separadores de ruta apropiados, que pueden variar según el sistema operativo subyacente. -
os.path.abspath(path)
: Esta función devuelve la versión de ruta absoluta de la ruta especificada . Resolverá cualquier enlace simbólico y reemplazará las rutas relativas con rutas absolutas. -
os.path.exists(path)
: Esta función verifica si la ruta dada existe en el sistema de archivos y regresa si existeTrue
; de lo contrario regresaFalse
. -
os.path.isdir(path)
: Devuelve si la ruta especificada apunta a un directorio existente;True
en caso contrarioFalse
. -
os.path.isfile(path)
: Devuelve si la ruta especificada apunta a un archivo existente;True
en caso contrarioFalse
. -
os.path.basename(path)
: Devuelve el nombre base de la ruta , es decir, el último componente de la ruta,Generalmente utilizado para representar nombres de archivos.。 -
os.path.dirname(path)
: Devuelve el nombre del directorio de la ruta, es decir, todas las partes de la ruta excepto el último componente. -
os.path.splitext(path)
: divide la ruta en una tupla(root, ext)
, donderoot
está la parte sin la extensión,ext
pero sí la extensión del archivo (incluido el punto).
1.2 Ejemplos de uso
A continuación se muestra os.path
un ejemplo de cómo utilizarlo:
import os
path = "/home/user/documents/sample.txt"
print("拼接后的路径:", os.path.join("/home", "user", "documents", "file.txt"))
print("绝对路径:", os.path.abspath(path))
print("路径是否存在?", os.path.exists(path))
print("是一个目录?", os.path.isdir(path))
print("是一个文件?", os.path.isfile(path))
print("文件基本名称:", os.path.basename(path))
print("目录名:", os.path.dirname(path))
print("拆分扩展名:", os.path.splitext(path))
1.3 Variables integradas
Las variables integradas no pertenecen a esta sección, pero a menudo se usan junto con el módulo os.path. Por lo tanto, se han agregado variables integradas a esta sección.
-
__name__
: Indica el nombre del módulo actual. Cuando el módulo se ejecuta directamente,__name__
el valor es'__main__'
; cuando se importa el módulo,__name__
el valor es el nombre del módulo. -
__file__
: es una de las variables integradas especiales que representa la ruta del archivo del módulo (o script) actual. -
__doc__
: Representa la cadena de documentación del módulo actual (o función, clase). Una cadena de documentación es una cadena que precede a una definición de módulo, función o clase y proporciona una breve descripción y explicación del módulo, función o clase. -
__package__
: Indica el nombre del paquete al que pertenece el módulo actual. Para módulos de nivel superior (módulos que no son paquetes),__package__
el valor esNone
. -
__builtins__
: es un diccionario que contiene las funciones integradas, excepciones y otros objetos integrados de Python. -
__loader__
: Representa el objeto del cargador de módulos que carga el módulo actual. -
__spec__
: Representa el objeto de especificación (ModuleSpec) del módulo actual. El objeto de especificación contiene metadatos sobre el módulo, como rutas de archivos, información del paquete, etc. -
__annotations__
: Se utiliza para almacenar información de anotación de tipo de variables. -
__cached__
: Solo disponible en modo compilado, representa la ruta del archivo de caché del módulo actual. -
__package__
: Indica el nombre del paquete al que pertenece el módulo actual. -
__class__
: Se utiliza en clases para indicar la clase a la que pertenece la instancia actual.
1.4 Apéndice: Explicación detallada de las variables integradas
-
__name__
:
__name__
Indica el nombre del módulo actual . Cuando el módulo se ejecuta directamente,__name__
el valor es'__main__'
; cuando se importa el módulo,__name__
el valor es el nombre del módulo.Ejemplo:
Supongamos que tenemos unexample_module.py
archivo de módulo llamado con el siguiente código:# example_module.py def hello(): print("Hello from example_module!") print("Module name:", __name__) if __name__ == "__main__": hello()
Cuando lo ejecutamos directamente
example_module.py
, el resultado será:Module name: __main__ Hello from example_module!
Cuando importemos en otro script
example_module.py
, el resultado será:Module name: example_module
-
__file__
:
__file__
Indica la ruta del archivo del módulo (o script) actual. Es una variable incorporada que se utiliza para obtener la ruta absoluta del archivo del script Python actual.En Python, cuando se ejecuta un script (módulo), el intérprete de Python almacena la ruta absoluta del archivo del script en una
__file__
variable. Esto nos permite obtener la ruta del archivo del script actual en el código, de modo que podamos manipular el archivo donde se encuentra el script o encontrar la ruta del archivo de recursos.Aviso:
__file__
__file__
Solo disponible en archivos de script, pero no definido en intérpretes interactivos o código que ejecuta directamente el intérprete.。El siguiente es un
__file__
ejemplo de uso para obtener la ruta del archivo de script actual:Digamos que tenemos un
example_script.py
archivo de script llamado con el siguiente código:# example_script.py import os current_script_path = os.path.abspath(__file__) print("当前脚本文件路径:", current_script_path)
Cuando lo ejecutamos directamente
example_script.py
, el resultado será:当前脚本文件路径: /path/to/example_script.py
-
__doc__
:
__doc__
Representa la cadena de documentación del módulo actual (o función, clase). Una cadena de documentación es una cadena que precede a una definición de módulo, función o clase y proporciona una breve descripción y explicación del módulo, función o clase.Ejemplo:
en lo anteriorexample_module.py
, podemos agregar una cadena de documentación para describir la funcionalidad del módulo:# example_module.py """This is an example module.""" def hello(): """Prints a greeting message.""" print("Hello from example_module!") print("Module name:", __name__) if __name__ == "__main__": hello()
En el intérprete interactivo de Python, podemos
__doc__
ver la cadena de documentación del módulo accediendo a:import example_module print(example_module.__doc__)
Producción:
This is an example module.
-
__package__
:
__package__
Indica el nombre del paquete al que pertenece el módulo actual.Ejemplo:
supongamos que tenemos una estructura de paquete como se muestra a continuación:my_package/ │── __init__.py │── module_a.py └── subpackage/ │── __init__.py └── module_b.py
En
module_b.py
, podemos__package__
obtener el nombre del paquete usando:# module_b.py print("Package name:", __package__)
Cuando importemos
module_b.py
, la salida será:Package name: my_package.subpackage
-
__builtins__
:
__builtins__
es un diccionario que contiene las funciones integradas, excepciones y otros objetos integrados de Python.Ejemplo:
podemos__builtins__
acceder a algunas funciones integradas comoprint()
y usandolen()
:print("Built-in print function:", __builtins__.print) print("Built-in len function:", __builtins__.len)
Producción:
Built-in print function: <built-in function print> Built-in len function: <built-in function len>
__builtins__
Por lo general, no se usa directamente porque las funciones y objetos integrados ya son accesibles globalmente. -
__loader__
:
__loader__
Representa el objeto del cargador de módulos que carga el módulo actual.Ejemplo:
Podemos acceder dentro de un módulo__loader__
para saber qué cargador cargó el módulo:# example_module.py print("Module loader:", __loader__)
El resultado suele mostrar el tipo de cargador e información relacionada.
-
__spec__
:
__spec__
Representa el objeto de especificación (ModuleSpec) del módulo actual. El objeto de especificación contiene metadatos sobre el módulo, como rutas de archivos, información del paquete, etc.Ejemplo:
Podemos acceder a un módulo__spec__
para comprender la información de especificación del módulo:# example_module.py print("Module specification:", __spec__)
La salida normalmente muestra las propiedades y la información relacionada del objeto de especificación.
-
__annotations__
:
__annotations__
Se utiliza para almacenar información de anotación de tipo de variables.Ejemplo:
supongamos que tenemos una función que usa anotaciones de tipo:def add(a: int, b: int) -> int: return a + b print("Annotations:", __annotations__)
Producción:
Annotations: {'a': <class 'int'>, 'b': <class 'int'>, 'return': <class 'int'>}
__annotations__
Almacena la información de tipo de parámetros y valores de retorno. -
__cached__
:
__cached__
Solo disponible en modo compilado, lo que indica la ruta del archivo de caché del módulo actual. Cuando el intérprete de Python ejecuta un módulo, almacena en caché el código de bytes del módulo en el disco duro para que pueda cargarse rápidamente la próxima vez.Ejemplo:
después de ejecutar el módulo en modo compilado, puede__cached__
ver la ruta al archivo almacenado en caché accediendo a:# example_module.py print("Cached file path:", __cached__)
El resultado suele mostrar la ruta al archivo almacenado en caché.
-
__package__
:
__package__
Indica el nombre del paquete al que pertenece el módulo actual. -
__class__
:
__class__
Se utiliza en clases para indicar la clase a la que pertenece la instancia actual.Ejemplo:
digamos que tenemos una clasePerson
:class Person: def __init__(self, name, age): self.name = name self.age = age def say_hello(self): print(f"Hello, I'm { self.name}.") person = Person("Alice", 30) print(person.__class__)
Producción:
<class '__main__.Person'>
__class__
DevuelvePerson
el tipo de objeto de la clase.