Em que SO estou a correr?
O que preciso de ver para ver se I'm no Windows ou Unix, etc?
553
20
O que preciso de ver para ver se I'm no Windows ou Unix, etc?
A saída de
platform.system()
é a seguinte:Linux
Ver: plataforma - Acesso aos dados de identificação da plataforma subjacente
Dang -- a lbrandy venceu-me, mas isso não'isso não significa que eu possa'não lhe forneça os resultados do sistema para o Vista!
...e ainda não acredito que ninguém tenha postado um para o Windows 10:
Para que conste aqui's os resultados em Mac:
Exemplo de código para diferenciar OS's usando python:
Você também pode utilizar
sys.platform
se você já importousys
e não'não quer importar outro móduloSe você quiser dados legíveis pelo usuário, mas ainda detalhados, você pode usar [platform.platform()][1]
[1]: http://docs.python.org/library/platform.html#platform.platform
Aqui's algumas chamadas diferentes possíveis que você pode fazer para identificar onde você está
As saídas deste script rodaram em alguns sistemas diferentes (Linux, Windows, Solaris, MacOS) e arquiteturas (x86, x64, Itanium, power pc, sparc) está disponível aqui: https://github.com/hpcugent/easybuild/wiki/OS_flavor_name_version
Ubuntu 12.04 servidor, por exemplo, dá:
Que tal uma nova resposta?
Esta seria a saída se eu estivesse usando MACOS
Eu estou usando a ferramenta WLST que vem com o weblogic, e ela não't implementa o pacote da plataforma.
Além de remendar o sistema javaos.py ([issue with os.system() on windows 2003 with jdk1.5][1]) (que eu posso't fazer, eu tenho que usar o weblogic fora da caixa), isto é o que eu uso:
[1]: http://osdir.com/ml/lang.jython.devel/2006-08/msg00035.html
Para Jython a única maneira de obter o nome que encontrei foi verificando a propriedade Java
os.name
(experimentado com módulossys
,os
eplatform
para Jython 2.5.3 no WinXP):/usr/bin/python3.2
Comecei uma listagem um pouco mais sistemática dos valores que você pode esperar usando os vários módulos (sinta-se à vontade para editar e adicionar o seu sistema):
Linux (64bit) + WSL
sys.platform
é sufixado pela versão do kernel, por exemplolinux2
, tudo o resto permanece idênticoplatform.architecture() = ('64bit', 'ELF')
WINDOWS (64bit)
(com a coluna 32bit em funcionamento no subsistema 32bit)
Algumas observações:
distutils.util.get_platform()
que é idêntica a `sysconfig.get_platformPara comparar com o seu sistema, simplesmente execute este script (e por favor anexe os resultados aqui se faltarem :)
Cuidado se você'está no Windows com o Cygwin onde
os.name
éposix
.Resultados interessantes em janelas 8:
Edit: That's a bug
na mesma linha...
Se você não está procurando a versão do kernel etc, mas procurando a distribuição linux, você pode querer usar o seguinte
em python2.6+
em python2,4
Obviamente, isto só funcionará se você estiver executando isto no linux. Se você quiser ter um script mais genérico através de plataformas, você pode misturá-lo com amostras de código dadas em outras respostas.
Experimenta isto:
e você pode fazer isso :
Existem 3 maneiras de obter OS em Python, cada uma com seus próprios prós e contras:
**Método 1***
Como isto funciona ([fonte][1]): Internamente, ele chama as OS APIs para obter o nome do SO como definido pelo SO. Isto pode obviamente mudar de versão para versão, então é melhor não usar diretamente. Veja [aqui][2] para vários valores específicos de SO.
**Método 2***
Como isto funciona ([fonte][3]): Internamente ele verifica se python tem módulos específicos de SO chamados posix ou nt. Se você quiser importar esses módulos e chamar métodos sobre ele, isso funciona muito bem. Note que não há diferenciação entre Linux ou OSX.
**Método 3***
Como isto funciona ([fonte][4]): Internamente irá eventualmente chamar as APIs internas do SO, obter nomes específicos da versão do SO como 'win32' ou 'win16' ou 'linux1' e depois normalizar para nomes mais genéricos como 'Windows' ou 'Linux' ou 'Darwin' aplicando várias heurísticas. Esta é a melhor maneira portátil de obter um nome de SO normalizado.
**Sumário***
platform.system()
.posix
ount
, então useos.name
.sys.platform
.[1]: https://github.com/python/cpython/blob/b82e17e626f7b1cd98aada0b1ebb65cb9f8fb184/Python/sysmodule.c#L1478 [2]: https://stackoverflow.com/a/13874620/207661 [3]: https://github.com/python/cpython/blob/3.7/Lib/os.py#L48 [4]: https://github.com/python/cpython/blob/3.7/Lib/platform.py#L949
Verifique os testes disponíveis com a plataforma do módulo e imprima a resposta para o seu sistema:
Você também pode usar apenas o módulo de plataforma sem importar o módulo para obter todas as informações.
Um layout agradável e arrumado para fins de relatório pode ser conseguido usando esta linha:
Isso dá esta saída:
O que está faltando normalmente é a versão do sistema operacional, mas você deve saber se você está executando windows, linux ou mac uma forma indipendente de plataforma é usar este teste:
Esta solução funciona tanto para a "python" como para a "jython".
módulo os_identify.py:
Use assim: