Was muss ich sehen, um zu sehen, ob ich unter Windows, Unix usw. bin?Python: Auf welchem OS laufe ich?
Antwort
>>> import os
>>> print os.name
posix
>>> import platform
>>> platform.system()
'Linux'
>>> platform.release()
'2.6.22-15-generic'
Der Ausgang des platform.system()
ist wie folgt:
- Linux:
Linux
- Mac:
Darwin
- Fenster:
Windows
See:
Warum sollte ich "Plattform" vor 'sys.platform' bevorzugen? – matth
@matth Etwas konsistentere Ausgabe. d. h. 'platform.system()' gibt '' Windows "' anstelle von '" win32 "' zurück. 'sys.platform' enthält auch' "linux2" 'auf alten Versionen von Python, während es nur' "linux" 'auf neueren enthält. 'platform.system()' hat immer nur '' Linux'' zurückgegeben. – erb
Auf Mac OS X, Plattform.System() immer "Darwin" zurück? oder ist es anders möglich? –
Dang - lbrandy schlägt mich bis zum Schlag, aber das bedeutet nicht, dass ich Ihnen nicht die Systemergebnisse für Vista liefern kann!
>>> import os
>>> os.name
'nt'
>>> import platform
>>> platform.system()
'Windows'
>>> platform.release()
'Vista'
... und ich kann niemand die nicht glauben, dass ein 10 noch für Windows geschrieben:
>>> import os
>>> os.name
'nt'
>>> import platform
>>> platform.system()
'Windows'
>>> platform.release()
'10'
Windows 7: 'platform.release()' ''7'' – Hugo
Also, ja, ich habe gerade' platform.release() 'auf meinem * Windows * * 10 * ausgeführt, und es hat mir definitiv nur' '8' 'gegeben '. Vielleicht habe ich Python vor dem Upgrade installiert, aber wirklich ?? – Codesmith
Ich hätte gedacht, dass es wahrscheinlicher ist, dass Sie von Windows 8 upgraden (im Gegensatz zu einer sauberen Installation) und was auch immer Python in der Registry nachschaut oder was noch übrig ist? – OJFord
Für die Aufzeichnung auf dem Mac die Ergebnisse hier:
>>> import os
>>> os.name
'posix'
>>> import platform
>>> platform.system()
'Darwin'
>>> platform.release()
'8.11.1'
können Sie Verwenden Sie auch sys.platform, wenn Sie bereits sys importiert haben und kein anderes Modul
>>> import sys
>>> sys.platform
'linux2'
>>> import sys
>>> sys.platform
'linux2'
importieren möchten
Hat einer der Ansätze irgendwelche Vorteile, neben dem Importieren eines anderen Moduls? – matth
Scoping ist der Hauptvorteil. Sie möchten so wenig globale Variablennamen wie möglich haben. Wenn Sie bereits "sys" als globalen Namen haben, sollten Sie keinen weiteren Namen hinzufügen. Aber wenn Sie "sys" noch nicht verwenden, könnte die Verwendung von "_platform" beschreibender sein und weniger wahrscheinlich mit einer anderen Bedeutung kollidieren. – sanderd17
Ich tue dies
import sys
print sys.platform
Docs hier: sys.platform.
Alles, was Sie brauchen, ist wahrscheinlich in der sys-Modul.
Ich verwende das WLST-Tool, das mit Weblogic geliefert wird, und es implementiert das Plattformpaket nicht.
wls:/offline> import os
wls:/offline> print os.name
java
wls:/offline> import sys
wls:/offline> print sys.platform
'java1.5.0_11'
Neben Patchen des Systems javaos.py (issue with os.system() on windows 2003 with jdk1.5) (was ich nicht tun kann, ich WebLogic aus der Box verwenden), ist es das, was ich benutze:
def iswindows():
os = java.lang.System.getProperty("os.name")
return "win" in os.lower()
>>> import platform
>>> platform.system()
in der gleichen Ader ....
import platform
is_windows=(platform.system().lower().find("win") > -1)
if(is_windows): lv_dll=LV_dll("my_so_dll.dll")
else: lv_dll=LV_dll("./my_so_dll.so")
Dies ist problematisch, wenn Sie auf einem Mac sind, da plattform.system() "Darwin" auf einem Mac und "Darwin" .lower() zurückgibt. Find ("win") = 3. – mishaF
/usr/bin/python3.2
def cls():
from subprocess import call
from platform import system
os = system()
if os == 'Linux':
call('clear', shell = True)
elif os == 'Windows':
call('cls', shell = True)
Willkommen auf SO, hier ist es eine gute Praxis zu erklären, warum Sie Ihre Lösung und nicht nur wie verwenden. Das wird Ihre Antwort wertvoller machen und dem Leser helfen, besser zu verstehen, wie Sie es tun. Ich schlage auch vor, dass Sie einen Blick auf unsere FAQ werfen: http://stackoverflow.com/faq. – ForceMagic
Gute Antwort, vielleicht sogar auf Augenhöhe mit der ursprünglichen Antwort. Aber du könntest erklären warum. – vgoff
Für Jython der einzige Weg os Name, den ich gefunden zu bekommen, ist os.name
Java-Eigenschaft zu überprüfen (versucht mit sys
, os
und platform
Module für Jython 2.5.3 auf WinXP):
def get_os_platform():
"""return platform name, but for Jython it uses os.name Java property"""
ver = sys.platform.lower()
if ver.startswith('java'):
import java.lang
ver = java.lang.System.getProperty("os.name").lower()
print('platform: %s' % (ver))
return ver
Wenn Sie Benutzer lesbare Daten wollen aber noch detailliert, können Sie platform.platform()
>>> import platform
>>> platform.platform()
'Linux-3.3.0-8.fc16.x86_64-x86_64-with-fedora-16-Verne'
Hier ein paar verschiedenen möglichen Anrufe verwenden Sie machen können, um festzustellen, wo Sie sind
import platform
import sys
def linux_distribution():
try:
return platform.linux_distribution()
except:
return "N/A"
print("""Python version: %s
dist: %s
linux_distribution: %s
system: %s
machine: %s
platform: %s
uname: %s
version: %s
mac_ver: %s
""" % (
sys.version.split('\n'),
str(platform.dist()),
linux_distribution(),
platform.system(),
platform.machine(),
platform.platform(),
platform.uname(),
platform.version(),
platform.mac_ver(),
))
Die Ausgaben dieses Skripts lief auf ein paar verschiedene Systeme ist hier verfügbar: https://github.com/hpcugent/easybuild/wiki/OS_flavor_name_version
Interessante Ergebnisse auf Windows 8:
>>> import os
>>> os.name
'nt'
>>> import platform
>>> platform.system()
'Windows'
>>> platform.release()
'post2008Server'
Edit: Das ist ein bug
Wenn Sie nicht für die Kernel-Version usw., aber der Suche nach der Linux-Distribution der Suche können Sie die folgende verwenden möchten
in python2.6 +
>>> import platform
>>> print platform.linux_distribution()
('CentOS Linux', '6.0', 'Final')
>>> print platform.linux_distribution()[0]
CentOS Linux
>>> print platform.linux_distribution()[1]
6.0
in python2.4
>>> import platform
>>> print platform.dist()
('centos', '6.0', 'Final')
>>> print platform.dist()[0]
centos
>>> print platform.dist()[1]
6.0
Offensichtlich wird dies nur funktionieren, wenn Sie diese auf Linux laufen. Wenn Sie plattformübergreifend mehr generisches Skript verwenden möchten, können Sie dies mit Codebeispielen aus anderen Antworten kombinieren.
Beispielcode unterscheiden OS Python:
from sys import platform as _platform
if _platform == "linux" or _platform == "linux2":
# linux
elif _platform == "darwin":
# MAC OS X
elif _platform == "win32":
# Windows
elif _platform == "win64":
# Windows 64-bit
Ist dieser Beispielcode von einem Python-Modul? Dies ist die einzige Antwort, die tatsächlich die Frage beantwortet. –
Für fuzzier Ergebnisse, '' _platform.startswith ('linux') –
ursprüngliche Antwort wie hier zu sehen http://Stackoverflow.com/a/8220141/3286832 – Yannis
Überprüfen Sie die verfügbaren Tests mit Modulplattform und drucken Sie die Antwort für Ihr System aus:
import platform
print dir(platform)
for x in dir(platform):
if x[0].isalnum():
try:
result = getattr(platform, x)()
print "platform."+x+": "+result
except TypeError:
continue
versuchen, dieses:
import os
os.uname()
und Sie können es machen:
info=os.uname()
info[0]
info[1]
os.uname() funktioniert nicht mehr ab Python 3.5. –
Auch 'os.uname()' ist nicht verfügbar unter Windows: https://docs.python.org/2/library/os.html#os.uname _Verfügbarkeit: ** neuere Versionen von Unix. ** _ – ccpizza
Achten Sie darauf, wenn Sie unter Windows mit Cygwin sind, wo os.name
posix
ist.
>>> import os, platform
>>> print os.name
posix
>>> print platform.system()
CYGWIN_NT-6.3-WOW
Nur der Vollständigkeit halber scheint die Umgebungsvariable "OS" überall definiert zu sein. Unter Windows XP/7/8/10 ist es auf "Windows_NT" eingestellt. Unter Linux SuSE SP2 ist es auf "x86-64 linux sles11 [2]" eingestellt. Ich habe keinen Zugriff auf OS-X oder BSD-Maschinen, wäre interessant, auch dort zu überprüfen.
import os
os_name = os.getenv("OS")
if os_name == "Windows_NT":
# Windows
elif "linux" in os_name:
# Linux
elif ...
Sie können auch nur Plattformmodul verwenden, ohne os Modul zu importieren, um alle Informationen zu erhalten.
for i in zip(['system','node','release','version','machine','processor'],platform.uname()):print i[0],':',i[1]
, dass diese Ausgabe gibt:
>>> import platform
>>> platform.os.name
'posix'
>>> platform.uname()
('Darwin', 'mainframe.local', '15.3.0', 'Darwin Kernel Version 15.3.0: Thu Dec 10 18:40:58 PST 2015; root:xnu-3248.30.4~1/RELEASE_X86_64', 'x86_64', 'i386')
Ein schönes und ordentlich Layout für einen bestimmten Zweck Reporting können mit dieser Linie erreicht werden
system : Darwin
node : mainframe.local
release : 15.3.0
version : Darwin Kernel Version 15.3.0: Thu Dec 10 18:40:58 PST 2015; root:xnu-3248.30.4~1/RELEASE_X86_64
machine : x86_64
processor : i386
in der Regel ist die Version Was fehlt Betriebssystem aber Sie sollten wissen, ob Sie Windows, Linux oder Mac eine Plattform unabhängige Weise verwenden, um diesen Test zu verwenden:
In []: for i in [platform.linux_distribution(),platform.mac_ver(),platform.win32_ver()]:
....: if i[0]:
....: print 'Version: ',i[0]
Verwenden Sie die Schlüsselwörter import os
und os.name
.
Wie über eine neue Antwort:
import psutil
psutil.OSX #True
psutil.WINDOWS #False
psutil.LINUX #False
Dies ist der Ausgang wäre, wenn ich OSX wurde unter Verwendung
Wahrscheinlich die eleganteste aller Antworten – jsphpl
Wenn Sie MacOS X laufen und laufen platform.system()
Sie bekommen Darwin weil macOS X auf gebaut Apples Darwin OS. Darwin ist der Kern von macOS X und ist im Wesentlichen macOS X ohne GUI.
- 1. Wie laufe ich Hintergrundprozesse auf Bluemix?
- 2. Wie laufe ich pip auf Python für Windows?
- 3. Wie überprüfe ich, ob ich in Python unter Windows laufe?
- 4. Mit welchem HTML5-Diagrammwerkzeug kann ich Änderungen im Laufe der Zeit mit verschiedenen x-Werten darstellen?
- 5. Wie kann ich im Laufe der Zeit diese Python-Code
- 6. Wie laufe ich verdreht von der Konsole?
- 7. wachsender Python-Prozessspeicher im Laufe der Zeit
- 8. date.timestamp nicht in Python gefunden? Ich laufe in diesen Fehler
- 9. BeautifulSoup zurückkehrend [] wenn ich es laufe
- 10. Selenium WebDriver: In welchem Umfang kann ich auf JavaScript zurückgreifen?
- 11. Wie kompiliere und laufe ich C Programm unter Mac OS X
- 12. Python-Skript-Zugriff auf os-Funktionen beschränken
- 13. Python-Paket (Sypder) friert auf OS X
- 14. Mac OS X & MAMP - Wie laufe ich mysql, ohne den vollständigen Pfad eingeben zu müssen?
- 15. Wie laufe ich Nodejs Runtime auf Android- oder iOS-Mobilgeräten?
- 16. Wie laufe ich 3 (mit Thread) -Funktion auf einen Klick?
- 17. Wie laufe ich ./configure mit MinGW?
- 18. Python os Modulpfad Funktionen
- 19. In welcher Ruby-Version laufe ich wirklich?
- 20. Webpack nicht Bundle-Datei auf npm Laufe
- 21. wie laufe laufen LMbench auf mac
- 22. Py_Initialize Absturz auf Windows OS
- 23. Wie laufe ich Anwendung neu starten
- 24. Wie laufe ich Java-Programm mit ant
- 25. Stackless Python-Netzwerkleistung verschlechtert sich im Laufe der Zeit?
- 26. Aus welchem Grund sollte ich mich verspotten?
- 27. Wie installiere ich gprof auf OS X
- 28. Wie installiere ich Haskell auf Mac OS
- 29. Woher weiß ich, ob ich vom GAC laufe oder nicht?
- 30. Installieren Sie pip auf OS X
siehe (http://bugs.python.org/issue12326) für Details! – arnkore
Hier ist eine verwandte Frage: [Überprüfen Sie den Namen der Linux Distribution] (http://stackoverflow.com/q/2756737/320399). – blong