PyMOTW: platform
12 Agosto 2008
Traducción de PyMOTW: platform el módulo
platform de la columna semanal de Doug Hellmann.
Prueba la arquitectura de una plataforma e infórmate de versiones con el módulo platform.
| Módulo: | platform |
|---|---|
| Proposito: | Acceder a información sobre las versiones del hardware, el sistema operativo y el intérprete. |
| Versión de Python | 2.3 y posterior |
Descripción:
A pesar de que Python es usado como un lenguaje multi-plataforma,
ocasionalmente es necesario saber qué clase de sistema estás usando.
Herramientas de compilación obviamente necesitan esta información, pero también
sabrás que algunas librerías o comandos externos tienen distintas interfaces en
distintos sistemas operativos. Por ejemplo, si estás escribiendo una
herramienta que gestione la configuración de red de un sistema operativo,
puedes tener una representación portable de las interfaces de red, aliases,
direcciones IP, etc. Peto una vez que estés realmente editando los archivos de
configuración, necesitas saber más acerca del sistema anfitrión y cómo está
configurado. El módulo platform te da algunas herramientas para aprender
acerca del intérprete, el sistema operativo y la plataforma de hardware que
está ejecutando tu programa.
Ejemplos:
Los resultados de los ejemplos a continuación han sido generados en una MacBook Pro corriendo OS X 10.5.2, una VAIO corriendo Ubuntu Linux 7.10 y Windows Vista.
(El artículo original de Doug Hellmann muestra los resultados de los ejemplos ejecutados en la MacBook mencionada y una instancia de WMWare corriendo CentOS 4.6.)
Intérprete:
Existen cuatro funciones para obtener información sobre el intérprete actual de
Python. python_version() y python_version_tuple() devuelven de forma
distinta la versión del intérprete con componentes mayor (major), menor
(minor) y parche (patchlevel). python_compiler() reporta el compilador
usado para crear el intérprete. Y python_build() da una cadena con la
versión de compilación del intérprete.
import platform
print 'Version :', platform.python_version()
print 'Version tuple:', platform.python_version_tuple()
print 'Compiler :', platform.python_compiler()
print 'Build :', platform.python_build()
OS X:
$ python platform_python.py
Version : 2.5.1
Version tuple: ['2', '5', '1']
Compiler : GCC 4.0.1 (Apple Computer, Inc. build 5367)
Build : ('r251:54869', 'Apr 18 2007 22:08:04')
Linux:
$ python platform_python.py
Version : 2.5.1
Version tuple: ['2', '5', '1']
Compiler : GCC 4.1.3 20070929 (prerelease) (Ubuntu 4.1.2-16ubuntu2)
Build : ('r251:54863', 'Jul 31 2008 23:17:40')
Windows Vista:
> python.exe platform_python.py
Version : 2.5.2
Version tuple: ['2', '5', '2']
Compiler : MSC v.1310 32 bit (Intel)
Build : ('r252:60911', 'Feb 21 2008 13:11:45')
Plataforma:
Un identificador de propósito general está disponible a través de la función
platform(). platform() acepta dos argumentos binarios opcionales. Si
aliased es True, los nombres en el valor de retorno son convertidos de un
nombre formal a su forma más común. Cuando terse es True, la función
devuelve un valor mínimo con algunas partes recortadas.
import platform
print 'Normal :', platform.platform()
print 'Aliased:', platform.platform(aliased=True)
print 'Terse :', platform.platform(terse=True)
OS X:
$ python platform_platform.py
Normal : Darwin-9.2.2-i386-32bit
Aliased: Darwin-9.2.2-i386-32bit
Terse : Darwin-9.2.2
Linux:
$ python platform_platform.py
Normal : Linux-2.6.22-15-generic-i686-with-debian-lenny-sid
Aliased: Linux-2.6.22-15-generic-i686-with-debian-lenny-sid
Terse : Linux-2.6.22-15-generic-i686-with-glibc2.4
Windows Vista:
> python.exe platform_platform.py
Normal : Windows-Vista-6.0.6001
Aliased: Windows-Vista-6.0.6001
Terse : Windows-Vista
Información sobre el sistema operativo y el hardware:
Información más detallada sobre el sistema operativo y el hardware en el que se
está ejecutando el intérprete puede ser obtenida también. uname() devuelve
una tupla que contiene valores del sistema (operativo), el nodo, el release,
la versión, la máquina y el procesador. Se puede acceder a valores
individuales a través de funciones con los mismos nombres:
system() devuelve el nombre del sistema operativo. node() devuelve el
nombre del nodo, sin calificación completa. release() devuelve el número de
release del sistema operativo. version() devuelve el número versión más
detallada del sistema. machine() da un identificador del tipo de hardware
como 'i386'. processor() devuelve un identificador real para el procesador,
o el mismo valor que machine() en muchos casos.
import platform
print 'uname:', platform.uname()
print
print 'system :', platform.system()
print 'node :', platform.node()
print 'release :', platform.release()
print 'version :', platform.version()
print 'machine :', platform.machine()
print 'processor:', platform.processor()
OS X:
$ python platform_os_info.py
uname: ('Darwin', 'farnsworth.local', '9.2.2', 'Darwin Kernel Version 9.2.2: Tue Mar 4 21:17:34 PST 2008; root:xnu-1228.4.31~1/RELEASE_I386', 'i386', 'i386')
system : Darwin
node : farnsworth.local
release : 9.2.2
version : Darwin Kernel Version 9.2.2: Tue Mar 4 21:17:34 PST 2008; root:xnu-1228.4.31~1/RELEASE_I386
machine : i386
processor: i386
Linux:
$ python platform_os_info.py
uname: ('Linux', 'notizbuch', '2.6.22-15-generic', '#1 SMP Fri Jul 11 19:25:33 UTC 2008', 'i686', '')
system : Linux
node : notizbuch
release : 2.6.22-15-generic
version : #1 SMP Fri Jul 11 19:25:33 UTC 2008
machine : i686
processor:
Windows Vista:
> python.exe platform_os_info.py
uname: ('Windows', 'Klapprechner', 'Vista', '6.0.6001', '', '')
system : Windows
node : Klapprechner
release : Vista
version : 6.0.6001
machine :
processor:
Arquitectura ejecutable:
Información individual sobre la arquitectura de un programa se puede obtener
usando la función architecture(). El primer argumento el la ruta de un
programa ejecutable (por defecto es sys.executable, el intérprete de Python).
El valor de retorno es una tupla que contiene la arquitectura de bits y el
formato de linkage usado.
import platform
print 'interpreter:', platform.architecture()
print '/bin/ls :', platform.architecture('/bin/ls')
OS X:
$ python platform_architecture.py
interpreter: ('32bit', '')
/bin/ls : ('32bit', '')
Linux:
$ python platform_architecture.py
interpreter: ('32bit', '')
/bin/ls : ('32bit', 'ELF')
Windows Vista:
> python.exe platform_architecture.py
interpreter: ('32bit', 'WindowsPE')
/bin/ls : ('32bit', '')
Referencias:
Python Module of the Week Home Descarga el código
Copyright 2008 Doug Hellmann
blog comments powered by Disqus
